【发布时间】:2019-03-16 01:16:56
【问题描述】:
我有一个按钮可以改变 onClick 的活动状态:
render() {
return(
<SomeButton
onClick={e => this.handleClick(e)}
id={someId}
activeStatus={someId === this.state.active ? "active" : "not active"}
/>
)
}
改变状态的函数:
handleClick(e) {
e.preventDefault();
this.setState({ active: e.currentTarget.id });
}
状态:
this.state = {
active: null
};
接收 activeStatus 道具的按钮:
export default function SomeButton({ activeStatus }) {
console.log(activeStatus);
return (
// button jsx code
);
}
但是,每次我点击按钮(我在页面上有 3 个该按钮的实例)时,activeStatus console.log 都会显示:
我点击按钮 1:
active
not active
not active
我点击按钮 2:
active
active
not active
我点击按钮 3:
active
active
active
我希望状态会根据单击的活动按钮切换。
我错过了什么?
【问题讨论】:
-
你确定
console.log行是准确的吗?在控制台输出中添加id。 -
是否可以为整个应用提供3个按钮?找到我认为的问题会更容易。
-
您能否为初始渲染添加更多代码?
-
// button jsx code这可能很重要,这个 jsx 的样子。就像你在什么对象上附加了id和作为props传递的点击处理程序 -
onClick={e => this.handleClick(e, someId)}怎么样
标签: javascript reactjs