专栏名称: Huanqiang
目录
相关文章推荐
51好读  ›  专栏  ›  Huanqiang

受控组件与非受控组件

Huanqiang  · 掘金  ·  · 2019-07-24 17:30

正文

阅读 9

受控组件与非受控组件

受控组件与非受控组件

在设计React 组件的时候,一定要注意数据来源,确保每一个数据都只有一个数据源。比如一个 state 不能既受 setState 的改变,又受 props 的变化而变化(比如 componentWillReceiveProps 或是 getDerivedStateFromProps 中)。

一旦遇到多数据来源的情况,请将其按照以下方案进行重新设计。

getDerivedStateFromProps 的作用:

  1. state 只受到 props 的影响;
  2. 只有当 state prop 不同时,才去修改 state

受控组件

受控组件是指 state 完全受Prop控制的组件。通常,建议将组件设计成完全受控组件。

const ControlComponent = (props) => {
  reutrn (<div>{ props.name }</div>)
}

//  或者
class ControlComponent extends React.Component {
  state = {
    name: 'xxx'
  }
	
	// 使用了 getDerivedStateFromProps 类更新的state,最好不要在组件中再使用
	// setState 来修改了,要保证数据来源的唯一性。
  staric getDerivedStateFromProps(nextProps, preState) {
    return {name: nextProps.name}
  }
}
复制代码






请到「今天看啥」查看全文


推荐文章
易观方舟AnalysysData  ·  中国在线移动生理健康市场专题分析2016
8 年前
爱手工  ·  做一只飞鸟给孩子玩
7 年前