【发布时间】:2018-07-05 10:25:15
【问题描述】:
我试图对 textarea 元素应用条件样式。它基于用户单击文本区域的时间,其样式需要相应更改。因此,我使用一个布尔变量来维护 textarea 的状态,当用户单击该变量时,该变量的值会发生变化,在我的样式属性中,我试图根据该布尔变量的值应用样式。
class InputContainer extends Component {
let {name,type} = this.props;
let clicked = false;
let styles = {
basic: {
border: "5px solid blue";
},
clicked: {
border: "2px solid green";
}
};
function populateField() {
switch(type) {
case "textBox":
return (
<div>
<textarea rows="5" name={name} style={Object.assign({}, styles.basic, clicked && styles.clicked)} onClick={()=>{clicked=true;}}>
</textarea>
</div>
)
break;
}
render() {
return({populateFields})
}
}
export default InputContainer;
styles.basic 已成功应用,但即使我单击 textarea,styles.clicked 也没有。此代码不起作用,我需要将 className 属性与 css 一起使用。
【问题讨论】:
-
你应该使用 React 状态来管理你点击的变量。如果你不这样做,当点击值改变时,渲染方法将不会被再次调用。所以你的组件不会自动更新。而不是
clicked = true你应该做this.setState({clicked: true}) -
谢谢他的工作
标签: javascript reactjs styles jsx inline-styles