next.js - amp hidden 在初始渲染时不起作用
问题描述
我有两个按钮根据状态值显示两个不同的图标。当组件首次加载时,我希望其中一个按钮可见。
这是我现在的代码:
<form
method="post"
action-xhr={`${hostName}/api/${itemId}/toggleFav`}
target="_top"
id="toggle-favorite-form"
dir="rtl"
encType="application/x-www-form-urlencoded"
>
<div className="add-to-fav-wrapper">
<div
className="ops-icon"
on={
'tap:AMP.setState({ favState: { newState: false }}),toggle-favorite-form.submit'
}
role="add-to-fav"
tabIndex="0"
data-amp-bind-hidden="favState.newState == false"
>
<Favorite />
</div>
<div
className="ops-icon"
on={
'tap:AMP.setState({ favState: { newState: true }}),toggle-favorite-form.submit'
}
role="remove-from-fav"
tabIndex="1"
data-amp-bind-hidden="favState.newState == true"
>
<NoneFavorite />
</div>
</div>
<input
hidden
name="newState"
data-amp-bind-value="favState.newState"
/>
<input
hidden
name="userId"
data-amp-bind-value="favState.userId"
/>
</form>
这就是状态:
<amp-state id="favState">
<script
type="application/json"
dangerouslySetInnerHTML={markup(
JSON.stringify({
userId: user?.id,
newState: !!isAddedTofav,
})
)}
/>
</amp-state>
该代码在正确更新收藏夹的意义上工作正常,但它只是在页面加载时不断显示两个按钮。
解决方案
我偶然发现了 amp 网站上关于如何切换收藏夹的官方文档。我试图通过使用动态状态来调整我的解决方案,但这并没有隐藏 amp。
所以最终我决定像他们一样重构代码,并且成功了。
希望将来有人可以回答我的问题。
这是链接:
推荐阅读
- c++ - '自定义向量
::size': 无法访问在类“CustomVector”中声明的私有成员 ' - java - 如何停止从互联网上解析schemaLocation
- java - 使用 gradle 6.6 排除资源
- javascript - 为什么变量 secondMenu 在使用反应从选择菜单中选择选项时不更新?
- django - Django 应用程序未在管理页面中显示注册模型
- javascript - 如何将模式应用于忽略元素变换值的 SVG 元素?
- python - UnboundLocalError 从 .bat 运行 .py(使用 API);在命令提示符下运行良好
- date - 在两个不同的日期范围之间过滤 pyspark 数据帧行
- xamarin.forms - 如何根据开关输入显示/隐藏 xamarin 表单内容页面中的条目?
- visual-studio - VSCode 中仍然存在错误的终端仿真器