kenberkeley / react-demo

React 示例项目 · 简易留言板。本项目拥有完善的文档说明与注释,让您快速上手 React 开发 SPA。Webpack / ES6 + Babel / Redux / React Router —— An Excellent React Starter,可能是东半球最佳的 React Starter,基于 Vue Cli 二次开发
1.91k stars 537 forks source link

很多组件的构造函数中有 this.state = XXX,请问这样和"不要直接手动修改state"矛盾吗? #18

Closed LittleTheFu closed 8 years ago

LittleTheFu commented 8 years ago

你好,我刚刚接触react。 教程上是说不要修改state,而是返回变化后的state的副本。 但是如下代码有 this.state = { inputVal: '' }

export default class TodoInput extends Component {
  constructor (props) {
    super(props)
    this.state = { inputVal: '' }
    this.handleChange = handleChange.bind(this)
  }
...
}
kenberkeley commented 8 years ago

这就是所谓的 本地状态

kenberkeley commented 8 years ago

Redux 中的 state 与各组件内部的 state 并不是同一个 state

LittleTheFu commented 8 years ago

谢谢,我刚才看了官方的sample,他也是这么做的。 官方教程

class Square extends React.Component {
  constructor() {
    super();
    this.state = {
      value: null,
    };
  }
  ...
}

我又顺着 本地状态 搜索到了一篇文章,希望对后来人有帮助。 Best Practices for Component State in React.js

非常感谢您的及时解答。

kenberkeley commented 8 years ago

还有一篇:You Might Not Need Redux

LittleTheFu commented 8 years ago

谢谢。