React

Awesome

Article

小知识点

  • React 组件中的 key 属性的值改变,React 将会创建新的实例,而不是更新现有的实例(可以用于重置 defaultProps)

重置不可控组件的 state

  • 修改组件的 key 值(React 组件中的 key 属性的值改变,React 将会创建新的实例,而不是更新现有的实例)

  • 传入一个 id 属性

class EmailInput extends Component {
  state = {
    email: this.props.defaultEmail,
    prevPropsUserID: this.props.userID
  };

  static getDerivedStateFromProps(props, state) {
    // Any time the current user changes,
    // Reset any parts of state that are tied to that user.
    // In this simple example, that's just the email.
    if (props.userID !== state.prevPropsUserID) {
      return {
        prevPropsUserID: props.userID,
        email: props.defaultEmail
      };
    }
    return null;
  }

  // ...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  • 使用组件中的方法(使用 ref 来调用这个方法)
class EmailInput extends Component {
  state = {
    email: this.props.defaultEmail
  };

  resetEmailForNewUser(newEmail) {
    this.setState({ email: newEmail });
  }

  // ...
}
1
2
3
4
5
6
7
8
9
10
11
上次更新: 7/17/2019, 2:13:18 AM