reactjs - 反应函数 displayBanner = () => {
问题描述
我目前正在开发一个项目,并尝试通过更改 className 的状态来隐藏横幅,如下所示:
<div className={visbilityBanner}>
我有一个隐藏横幅按钮,如下所示:
<button
type="button"
className="btn btn-secondary btn-sm"
size="small"
style={hideButtonsStyle}
onClick={(e) => displayBanner(e)}
>
Hide Banner
</button>
我的思路是解决方案需要一个名为 displayBanner 的函数。在下面的代码中,它检查 !bannerHdr && !bannerMsg (如果没有文本,则变量未定义)然后更改 className = 'hide' 横幅 else className = 'show'
const displayBanner = () => {
const [visbilityBanner, setVisbilityBanner] = useState('show');
if (!bannerHdr && !bannerMsg) {
setVisbilityBanner('hide');
console.log(visbilityBanner);
return visbilityBanner;
}
setVisbilityBanner('show');
console.log(visbilityBanner);
return visbilityBanner;
};
但是,我收到一个编译错误:
编译失败
Failed to compile
./src/components/Banners.js
Line 220: React Hook "useState" is called in function "displayBanner" which is neither a React function component or a custom React Hook function react-hooks/rules-of-hooks
Line 249: 'visbilityBanner' is not defined no-undef
Search for the keywords to learn more about each error.
This error occurred during the build time and cannot be dismissed.
任何人都可以协助解释我所缺少的吗?
解决方案
逻辑应该是style
prop的一部分:
<HeaderWrapper style={{ visibility: props.isBannerVisible ? 'hidden' : 'none' }}>
如果你仍然想要一个函数,你应该返回一个对象而不是一个字符串,所以它会匹配style
道具:
function hideBanner(isBannerVisible) {
return { visiblity: isBannerVisible ? "hidden" : "none" };
}
<HeaderWrapper style={{ ...hideBanner(props.isBannerVisible) }} />;
推荐阅读
- python - Seaborn:如何在计数图中显示值?
- authentication - 非服务帐户的 AD/LDAP 身份验证
- angular - 当 typeahead 没有任何结果时删除最后输入的字符
- json - Swift JSON解码器不同类型
- python - 从 django 服务器上传时,Firestore 存储未显示图像
- java - 如何在 Maven 构建时注入一个属性,该属性稍后在 Java 项目中运行时可以访问?
- ruby-on-rails - 如何创建一个模块/助手来自动选择正确的 ruby 图像或视频标签?
- sql - Wordpress PHP 使用通配符准备 SQL 查询
- http - 颤振中的错误 url_launcher 不起作用
- r - R中带有扩展窗口的滚动回归