使用React的Unknown Prop,如何创建新的html属性

时间:2017-02-21 14:39:47

标签: javascript reactjs react-proptypes

我正在尝试在我的输入元素上为我的收音机和复选框创建一个:indeterminate属性。

我发出以下错误:

Unknown prop `indeterminate` on <input> tag. Remove this prop from the element

是否可以创建新道具或是否完全锁定?

1 个答案:

答案 0 :(得分:1)

只需将输入包装到另一个可以接受indeterminate道具的组件中:

const IndeterminateInput = React.createClass({
  render() {
    // Create props clone
    const cleanProps = Object.assign({}, this.props);
    delete cleanProps['indeterminate'];
    return <input ref="input" {...cleanProps}/>
  },
  updateInput: function () {
    this.refs.input.indeterminate = Boolean(this.props.indeterminate);
  },
  componentDidMount() {
    // Initial render
    this.updateInput();
  },
  componentDidUpdate() {
    // Props change
    this.updateInput();    
  } 
});

然后您可以将此组件用作包装器:

<IndeterminateInput type="checkbox" indeterminate />

请注意,即使在HTML indeterminate中也不是有效的属性。您必须手动更新DOM:

<!-- This does not work! -->
<input type="checkbox" indeterminate>