【发布时间】:2019-05-02 15:16:08
【问题描述】:
我有一个要在单击按钮时隐藏的响应元素。
元素样式在构造函数中加载如下:
constructor(props) {
super(props);
this.state = {
display: 'block'
};
this.ElementStyle= {
width: '100%',
backgroundColor: '#F6F6F6',
color: '#404040',
padding: '8px 15px',
boxSizing: 'content-box',
position: 'fixed',
bottom: '0',
display: this.state.display
}
}
元素在它的 render() 中有一个按钮,它调用一个改变状态的函数,如下所示:
render() {
<button onClick={this.Method.bind(this)}>Click me </button>
}
还有 Method():
Method() {
this.setState({
display: 'none'
});
}
然后我有这个:
shouldComponentUpdate() {
this.ElementStyle.display = this.state.display;
}
不过这是在说:"TypeError: "display" is read-only"
【问题讨论】:
-
在我当前的项目中,我在 componentDidMount() 方法中使用了 jquery 来完成此操作。但是,我已经看到了对此的建议,所以我也想看看对此的想法。
-
如果你在 react 中使用 jquery(如果你没有包装非反应库)可能是你以错误的方式使用它。此任务有多种方法,最简单的方法是在 CSS 中定义两个类并切换 className(不依赖 jQuery)
-
@MosèRaguzzini 好吧,我没有导入 jquery 只是为了肯定的切换方法。但我明白你在说什么,我也使用 vanilla js 和 css 来完成这项任务。我的意思是,在组件状态中包含所有这些不同的东西会变得乏味。我对状态的看法是,它旨在跟踪用户输入数据。当您开始在状态中存储基本的 UI 功能时,我想这似乎有点过头了。我必须习惯这个概念,因为这显然是“正确”的方式。
-
视情况而定.在 CSS/Styled-components/SASS/LESS 或类似中管理单个 css 肯定更好,并考虑到简单地使用类
标签: javascript html css reactjs