gpt4 book ai didi

javascript - React 子组件 props 没有更新

转载 作者:行者123 更新时间:2023-12-03 09:14:17 24 4
gpt4 key购买 nike

我正在尝试在其 componentDidMount 上渲染一个组件(例如 Counter)到另一个组件 Panel。我还将一个名为 count 的状态作为 props 传递给 Counter。在一定的时间间隔内,我会更新状态。但问题是 Counter 的 props 没有更新。 prop 仍保持初始值。原因是什么?

/** @jsx React.DOM */

var Panel = React.createClass({

getInitialState: function(){
return {
count: 0
}
},

tick: function() {
setInterval(function(that) {
that.setState({
count: that.state.count + 1
});
}, 500, this);
},

componentDidMount: function() {
var panel = React.findDOMNode(this.refs.panel);
React.render(<Counter count={this.state.count}/>, panel);
this.tick();
},

render: function(){
return <div ref="panel"></div>;
}

});

var Counter = React.createClass({

render: function() {
return <p>{this.props.count}</p>
}

});

React.render(<Panel/>, document.getElementById('container'));



<body>
<div id="container"></div>
</body>

我想知道这段代码不起作用的 react 原因

JS斌check here

最佳答案

这段代码很糟糕。为什么要在组件内调用 React.render ?只需在 render 函数中渲染计数器即可。

/** @jsx React.DOM */

var Panel = React.createClass({

getInitialState: function(){
return {
count: 0
}
},

tick: function() {
setInterval(function(that) {
that.setState({
count: that.state.count + 1
});
}, 500, this);
},
componentDidMount() {
this.tick();
},
render: function(){
return <div ref="panel"><Counter count={this.state.count}/></div>;
}

});

var Counter = React.createClass({

render: function() {
return <p>{this.props.count}</p>
}

});

React.render(<Panel/>, document.getElementById('container'));

关于javascript - React 子组件 props 没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996338/

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