【发布时间】:2018-01-16 11:10:27
【问题描述】:
我有一个包含两个函数的组件,它们应该更新状态对象:
class Categories extends Component {
constructor(props) {
super(props);
this.state = {
data: [],
categoryData: [],
objects: [],
object:[],
};
}
componentDidMount() {
this.setState({
data:data.Dluga,
categoryData: data.Dluga.basic,
objects:data,
})
}
changeCategory(event) {
event.preventDefault();
this.setState({
categoryData: this.state.data[(event.currentTarget.textContent).split(' ')[1]],
});
}
changeObject(event) {
event.preventDefault();
const objectOne = Object.assign({}, this.state.objects[event.currentTarget.parentElement.parentElement.children[0].children[0].value]);
this.setState({
objects: this.state.objects,
object:objectOne,
});
};
render() {
return (
<div className='categories'>
<SelectObejct onValueChange={this.changeObject}/>
<ul>
{Object.keys(this.state.data).map((item) => {
return (
<li className='category' key={item}
onClick={this.changeCategory.bind(this)}>
<span className='category-item'> {item}</span>
</li>
)})
}
</ul>
<div>
<CategoryData categoryData={this.state.categoryData}/>
</div>
</div>
);
}
}
当我使用 changeObject 更新状态时,我在状态对象中有两个属性:objects 和 object,但最初是 4 个属性...接下来,当我使用 changeCategory 更新状态时,我的初始属性来自componentDidMount 并更新了 categoryData 但 object 为空...我无法在一个函数中更新状态,因为它是两个 onClick 元素。我应该怎么做才能正确更新状态?
【问题讨论】:
-
在
componentDidMountdata来自哪里? -
另请注意,上面的语法错误会阻止它运行(
changeObject的方法主体结束后的;)。 (如果那是您的真实代码并且您正在转译并且转译器让您侥幸逃脱;,请在转译器项目中提交有关它的错误。) -
抱歉,这个组件没有多大意义……你能在沙箱中创建它吗……比如codesandbox.io?
标签: javascript reactjs state