我正在使用react.js,并在构造函数中添加了this.setState()
,但是它不起作用。
这是我的代码-
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
age: '18'
}
this.setState({id: 'name'});
}
render(){
return (
<div>
<p>{this.state.id}</p>
<p>{this.state.value}</p>
</div>
)
}
}
这将呈现第二个p
标签,但不会呈现第一个标签?
答案 0 :(得分:1)
setState函数除了设置状态外,还具有在更改时重新呈现的机制。
构造函数在实际安装组件之前执行,并且不会呈现任何内容。这就是为什么在构造函数中使用setState毫无意义。
所以您将需要像这样实现:
constructor(props) {
super(props);
this.state = {
age: '18',
id: 'name'
}
}
答案 1 :(得分:1)
不要在构造函数或渲染方法中使用make make-java
构造函数-将在创建实例时调用一次。
渲染-如果在渲染方法中使用setState()
,它将变为无穷大,因为在使用setState()
如果要保存此类属性以声明,请在生命周期方法setState()
已改进
componentDidMount()
或直接按照年龄使用
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
age: '18'
}
}
componentDidMount(){
this.setState({id: 'name'});
}
render(){
return (
<div>
<p>{this.state.id}</p>
<p>{this.state.value}</p>
</div>
)
}
}
答案 2 :(得分:-1)
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
age: '18',
id: '',
}
}
componentDidMount(){
this.setState({id: 'name'});
}
render(){
return (
<div>
<p>{this.state.id}</p>
<p>{this.state.age}</p>
</div>
)
}
}