render() {
const { type, id = this.id, className,
value = this.state.value, required, ...otherProps } = this.props;
return (
<input
id={id}
name={id}
className={className}
required={required}
aria-required={required}
type={type}
value={value}
onChange={this.handleChange}
{...otherProps}
/>
);
}
我正在尝试分配&#39; id&#39;和&#39;价值&#39; const变量为&#39; this.id&#39;和&#39; this.state.value&#39;但是没有分配值,而是从this.props传递的值中分配这些值。
我处于一个用例,其中componentWillMount()和handleChange()函数使用&#39; pros.id&#39;和&#39; props.value&#39;计算一些新值,这些值将分配给&#39; this.id&#39;和&#39; this.state.value&#39;。因此,在上面的代码中我需要&#39; id&#39;和&#39;价值&#39;取自&#39; this.id&#39;和&#39; this.state.vale&#39;分别
答案 0 :(得分:0)
您正在将this.props
解构为变量,而您使用的语法只会在this.id
不存在时将id
分配给this.props.id
。在解构中使用=
用于在结构化对象中不存在该值时提供默认值(因此在此示例中this.id
仅在id
时分配给this.props.id
}不存在)。
您应该从对象解构调用中删除id
。如果您想提供一个后备选项来使用道具中的id
,那么您可以这样做:
const id = this.id || this.props.id;
答案 1 :(得分:0)
你似乎在寻找
const {type, id: this.id, className, value: this.state.value, required, ...otherProps} = this.props;
// ^ ^
:
分隔属性名称和分配目标,=
用于默认初始值。如果this.id
中没有id
属性,则您的语法会从id
获取值,并将其分配给this.props
变量。