`

ReactStateSetters

 
阅读更多

ReactStateSetters用于更新state[key]值。

 

'use strict';

var ReactStateSetters = {
  // 本模块的ReactStateSetters.Mixin.createStateSetter更灵活地实现自动更新组件的state
  createStateSetter: function (component, funcReturningState) {
    return function (a, b, c, d, e, f) {
      var partialState = funcReturningState.call(component, a, b, c, d, e, f);
      if (partialState) {
        component.setState(partialState);
      }
    };
  },

  // LinkedStateMixin模块中调用,实现linkState方法实现双向数据绑定
  createStateKeySetter: function (component, key) {
    // Memoize the setters.
    var cache = component.__keySetters || (component.__keySetters = {});
    return cache[key] || (cache[key] = createStateKeySetter(component, key));
  }
};

function createStateKeySetter(component, key) {
  var partialState = {};
  return function stateKeySetter(value) {
    partialState[key] = value;
    component.setState(partialState);
  };
}

ReactStateSetters.Mixin = {
  // 添加为组件的mixins类方法,createStateSetter(xValue=>{x: xValue})(1)将和setState({x: 1})起相同效果
  createStateSetter: function (funcReturningState) {
    return ReactStateSetters.createStateSetter(this, funcReturningState);
  },

  // 添加为组件的mixins类方法,createStateKeySetter('x')(1)将和setState({x: 1})起相同效果
  createStateKeySetter: function (key) {
    return ReactStateSetters.createStateKeySetter(this, key);
  }
};

module.exports = ReactStateSetters;

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics