请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,我这里爆了一个警告

图片描述

class App extends Component {
  constructor(props) {
    super(props)
    this.state = store.getState()
    this.handleChangeValue = this.handleChangeValue.bind(this)
    this.handleValue = this.handleValue.bind(this)
    store.subscribe(this.handleValue)
  }
  render() {
    return (
      <div style={{ marginTop: '20px' }}>
        <Input
          value={this.state.inputValue}
          style={{ width: '300px', marginRight: '20px' }}
          onChange={this.handleChangeValue}
        />
        <button>提交</button>
        <Divider orientation="left">Large Size</Divider>
        <List
          size="large"
          header={<div>Header</div>}
          footer={<div>Footer</div>}
          bordered
          dataSource={this.state.List}
          renderItem={(item) => <List.Item>{item}</List.Item>}
        />
      </div>
    )
  }
  handleChangeValue(e) {
    const action = {
      type: 'CHANGE_VALUE',
      inputValue: e.target.value,
    }
    store.dispatch(action)
  }
  handleValue() {
    this.setState(() => {
      return store.getState()
    })
  }
}

请问一下我这是哪里写的有错误吗
我在handleValue里面打印store.getState(),为什么我每次输入的时候,它会执行两次
图片描述

正在回答

2回答

你不能在constructor 里调用setstate

0 回复 有任何疑惑可以回复我~
  • 提问者 天河卢姥爷 #1
    可是我看老师您视频演示的时候也是把setstate放在constructor里面调用的呀,如果不放在constructor里调用的话,要放在哪里去调用呢
    回复 有任何疑惑可以回复我~ 2020-06-07 19:23:19
  • Dell 回复 提问者 天河卢姥爷 #2
    componentDidMount
    回复 有任何疑惑可以回复我~ 2020-06-07 21:40:33
  • 瓦力博客 回复 提问者 天河卢姥爷 #3
    你的好了吗,我放在  componentDidMount  这里面也是报错的
    回复 有任何疑惑可以回复我~ 2020-07-13 14:53:34
瓦力博客 2020-07-13 14:48:09

执行两次看看是不是在入口index.js文件使用了严格模式

<React.StrictMode>   //StrictMode是严格模式,在开发环境,react会在严格模式下对一部分的钩子函数执行两次
{/* <TodoList /> */}
<App />
</React.StrictMode>,


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信