我正在尝试使用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}
我错过了什么吗?
答案 0 :(得分:3)
_.extend修改第一个参数,并返回它。为避免突变,您应该传递一个空对象或默认对象作为第一个参数。
var newProps = _.extend({}, this.props, {b: 2, c: 3});
我建议使用普通名称_.assign(extend是别名)。它更清楚它的作用,并匹配es6的Object.assign。