gpt4 book ai didi

javascript - 更新状态,但不在 ReactJS 中重新渲染?

转载 作者:行者123 更新时间:2023-12-03 07:47:26 24 4
gpt4 key购买 nike

我对 React 很陌生,刚刚入门。我很难理解为什么这不重新渲染列表。这是我的代码:

app.jsx

var Hello = React.createClass({
getInitialState: function() {
return {
links: ['test ']
}
},
render: function() {
return <div className = "row">
<Submission linkStore = {this.state.links}/>
<List links = {this.state.links} />
</div>

}
});

var element = React.createElement(Hello, {});
ReactDOM.render(element, document.querySelector('.container'));

在我的submission.jsx中,我有这个函数将信息推送到links数组

  handleSubmitClick: function() {
this.props.linkStore.push(this.props.text)
this.setState({text: ''})
console.log(this.props.linkStore)
}

我的 list.jsx 看起来像这样

module.exports = React.createClass({
getInitialState: function() {
return {
links: this.props.links
}
},
render: function() {
return <div>
{this.props.links}
</div>
}
});

一切都按预期进行,我可以让测试正确显示。

我知道这不会显示为实际列表,我应该创建一个列表组件以列表形式显示项目。我只是尝试一路运行测试,看看一切是如何工作的。

最佳答案

使用父state而不是子props

试试这个

app.jsx

var Hello = React.createClass({
getInitialState: function() {
return {
links: ['test ']
}
},
handleListSubmitClick: function(params) {
this.setState({links:params});
},
render: function() {
return <div className = "row">
<Submission linkStore = {this.state.links} handleListSubmitClick={this.handleListSubmitClick}/>
<List links = {this.state.links} />
</div>

}
});

提交.jsx

handleSubmitClick: function() {
var linkStore = this.props.linkStore;
linkStore.push(this.props.text)
this.setState({text: ''})
this.props.handleListSubmitClick(linkStore);
}

但我不明白this.props.text。使用 this.refs.ref

输入的值

列表.jsx

module.exports = React.createClass({
getInitialState: function() {
return {
links: this.props.links
}
},
render: function() {
return <div>
{this.props.links}
</div>
}
});

关于javascript - 更新状态,但不在 ReactJS 中重新渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35145277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com