传递函数给组件

class 属性(第三阶段提案)

  1. class Foo extends Component {
  2. // Note: this syntax is experimental and not standardized yet.
  3. handleClick = () => {
  4. console.log('Click happened');
  5. }
  6. render() {
  7. return <button onClick={this.handleClick}>Click Me</button>;
  8. }
  9. }

为什么 setState 给了我一个错误的值?

setState是异步的

如何解决?
给 setState 传递一个函数,而不是一个对象,就可以确保每次的调用都是使用最新

  1. incrementCount() {
  2. this.setState((state) => {
  3. // 重要:在更新的时候读取 `state`,而不是 `this.state`。
  4. return {count: state.count + 1}
  5. });
  6. }

setState 什么时候是异步的?

目前,在事件处理函数内部的 setState 是异步的。

例如,如果 Parent 和 Child 在同一个 click 事件中都调用了 setState ,这样就可以确保 Child 不会被重新渲染两次。

什么是 Virtual DOM?

虚拟的DOM,使用React-Dom库和真实的DOM同步,这一过程叫做协调。