【发布时间】:2019-07-08 11:49:14
【问题描述】:
我定义了一个数组。
然后将该数组作为道具传递给控制台子节点。main.js
class Main extends Component {
constructor() {
super();
this.moduleArray = [];
this.state = {
moduleArray: this.moduleArray
};
}
render() {
return (
<div id="builder-root">
<Console moduleArray={this.moduleArray} />
</div>
);
}
}
}
export default Main;
我将数组分配给const
然后 onClick 我将一个参数传递给运行 switch 语句的append 函数。然后我将匹配案例的内容推送到数组中。 console.js
class Console extends React.Component {
render() {
const { moduleArray } = this.props;
const append = x => e => {
switch (x) {
case 0:
console.log("case0");
moduleArray.push(
<div
key={moduleArray.length}
id={moduleArray.length}
style={{ fontSize: 0, lineHeight: 0 }}
>
<Mod1 />
</div>
);
console.log("pushed");
break;
//other switch cases
default:
}
this.setState({
moduleArray: this.moduleArray
});
};
return (
<div id="console">
<input onClick={append(0)} value="Single col" type="submit" />
//other clicks passing parameters
</div>
);
}
}
export default Console;
然后.....什么也没有发生。好吧,我什么也不说。该函数运行并打印控制台日志,我没有收到错误。但内容不呈现。
我认为我需要以某种方式使用spread 运算符,但我不确定并且很难在这种情况下找到任何阅读材料。
【问题讨论】:
-
在您的逻辑案例中,您应该接收道具并渲染它们并更改 仅父组件的状态因为不变性原则,就像 Felix 的回答所说
-
您是如何在
main.js组件中使用moduleArray的?
标签: javascript reactjs ecmascript-6 jsx