尝试从this.props

时间:2017-05-12 07:10:49

标签: reactjs ecmascript-6 eslint

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;分别

2 个答案:

答案 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变量。