我經常發現自己處於需要製作組件的情況下,接受任何有效的HTML屬性以使底層HTML元素使用它們。因爲陣營抱怨不作爲alert
屬性input
一個有效的正確地避免將無效屬性傳遞給React原語
class Input extends React.Component {
// Here I use one of the `props` to add logic to
// my component
onChange =() => alert(this.props.alert);
render() {
// Here I want to pass all the properties
// down to the HTML input element
return <input onChange={this.onChange} {...this.props} />
}
}
我上面的示例將拋出一個警告。
我通常解決該問題做如下:
class Input extends React.Component {
// Here I use one of the `props` to add logic to
// my component
onChange =() => alert(this.props.alert);
render() {
const {
alert, // eslint-disable-line no-unused-vars
...props
} = this.props;
// Here I want to pass all the properties
// down to the HTML input element
return <input onChange={this.onChange} {...props} />
}
}
現在該部件工作正常,但我不覺得舒服的最終結果。
我明白爲什麼React不允許將未知屬性傳遞給它的原語,因爲它們不會使用它們,並且它不會提供無用的屬性,這些屬性將來可能成爲有效的HTML屬性或導致錯誤行爲或副作用。
但我不明白React如何處理這個(很常見的)用例。
有沒有建議的方式來處理這種情況下乾淨的方式?
我看到類似react-css-modules的庫將自己的道具定義爲不可枚舉來解決這個問題,但是我沒有意識到任何使用Rect將props聲明爲不可枚舉的方法。 –