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

来源:5-5 Action 和 Reducer 的编写

天河卢姥爷

2020-06-06

图片描述

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回答

Dell

2020-06-07

你不能在constructor 里调用setstate

0
3
瓦力博客
回复
天河卢姥爷
你的好了吗,我放在 componentDidMount 这里面也是报错的
2020-07-13
共3条回复

瓦力博客

2020-07-13

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

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


0
0

React零基础入门到实战,完成企业级项目简书网站开发

主流新技术 React-redux,React-router4,贯穿基础语法

5275 学习 · 2496 问题

查看课程