在 ReactJS 中设置缺失属性的默认值
Set default values for missing properties in ReactJS
假设一个组件从其父组件接收 React 中的嵌套属性:
getDefaultProps: function(){
return ({
"data" : {
"style": {
pieChart: true, // otherwise it'd be a donut chart
radius: 100
},
"series": {
"data": []
}
}
});
},
可以接收具有一些缺失值的属性(例如,我们可能会收到系列但不接收样式,或者我们可能会收到半径的值,但不会收到饼图的值)
我们如何只为缺失值定义默认值? 并保留接收的其余值
您无法
在getDefaultProps
方法中为深层对象设置默认值,但可以在componentWillMount
方法中设置默认值。
React.createClass({
getDefaultProps() {
return {
"data" : {
"style": {
pieChart: true, // otherwise it'd be a donut chart
radius: 100
},
"series": {
"data": []
}
}
}
},
componentWillMount() {
if(!this.props.data.style) {
this.props.data.style = {
pieChart: true,
radius: 100
};
}
if(!this.props.data.series) {
this.props.data.series = {
data: []
};
}
}
});
但是,不建议这样做,因为 React 最佳实践指出您不应从组件中修改this.props
。您真正应该做的是在将对象传递到组件之前,使用 componentWillMount
中的逻辑根据自己的喜好格式化对象。
道具是要被覆盖的。您可以使用 componentWillReceiveProps
函数来处理旧 props 和新 props 之间的任何协商,但您必须自己写出逻辑。不完全确定您的数据结构是什么样子的,但我相信您可以使用下划线的_.extend
和_.defaults
来完成这项工作。
相关文章:
- Html5输入属性的默认值,如最小值、最大值、大小等
- 在JavaScript中,函数的默认值是多少'的原型属性
- 在 ReactJS 中设置缺失属性的默认值
- 如果会话中的属性不为 null 或默认值,则运行/打印 JavaScript Razor ASP.NET MVC
- 接受选项对象作为参数的简洁方法,回退到省略属性的默认值
- JavaScript 继承的属性默认值
- 如果属性值为 null,则使用主干模型默认值
- 无法使用 jQuery 更改输入的默认值属性
- Javascript 更新未发布,属性在绑定时具有默认值
- 使用用户提供的对象的属性(如果存在),否则使用默认值
- 如何设置指令属性的默认值
- Jquery自定义验证,具有Html 5数据属性和默认值
- 设置对象属性的默认值
- 是否有CSS属性的默认值列表?(所以我可以在js中为他们创建一个排除数组)
- XMLHttpRequest上async属性的javascript默认值是什么?开放的方法
- 属性默认值:Attribute . defaultvalue
- Null对象中属性默认值的赋值
- 为不存在的属性设置默认值的Angular服务
- toggleProperty将组件的所有属性设置为默认值
- 将元素的属性设置为"from"中的默认值关键帧规则关键字