当道具延伸时,react.sss的react.ss变异

时间:2014-11-22 15:51:48

标签: javascript reactjs lodash

我正在尝试使用lodash的_.extend方法扩展道具并将其分配给新变量。但这改变了this.props的价值

var Component = React.createClass({
   render: function () {
      var newProps = _.extend(this.props, {b: 2, c: 3});
      console.log(this.props, newProps);
      return <div> hello world </div>
   }
});

React.render(<Component a={1} b={2} />, document.body);

在上面的例子中,{a:1,b:2:c:3}被打印到this.props和newProps的控制台中

但预期值为:this.props = {a:1,b:2}和newProps = {a:1,b:2,c:3}

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

_.extend修改第一个参数,并返回它。为避免突变,您应该传递一个空对象或默认对象作为第一个参数。

var newProps = _.extend({}, this.props, {b: 2, c: 3});

我建议使用普通名称_.assign(extend是别名)。它更清楚它的作用,并匹配es6的Object.assign。