Reactが開発した小さなテクニック
1588 ワード
1、ifの代わりに短絡表記
3、es 6 restパラメータ(形式は...変数名)を利用して可変数のpropsを伝達する
4、setStateのその他の使い方
5、React性能の最適化
6、サブアセンブリ親アセンブリのstateを変更する
// // , // !! boolean const flag = 0; !!flag &&
2、使用es6新特性传递组件props
const {data, type} = this.state;
//
// es6
3、es 6 restパラメータ(形式は...変数名)を利用して可変数のpropsを伝達する
//
const Demo = ({ prop1, prop2, ...restProps }) => (
{ restProps.text}
)
// Demo
4、setStateのその他の使い方
// state
const { data } = this.state;
this.setState({ data: {...data, key: 1 } });
// callback state
this.setState(({ data }) => ({ data: {...data, key: 1 } }));
//
this.setState((state, props) => {
return { counter: state.counter + props.step };
});
5、React性能の最適化
// React ,
// shouldComponentUpdate
// 。
// , ,
// ,
// lodash( ) isEqual
shouldComponentUpdate(nextProps, nextState) {
if (_.isEqual(nextState.columns, this.state.columns)) return false;
return true;
}
6、サブアセンブリ親アセンブリのstateを変更する
// state , ,
// :setParentState, ,
//
state = {data: {}};
setParentState = obj => {
this.setState(obj);
}
//
onClick = () => {
this.props.setParentState({ data: xxx });
}