我刚刚重新制作了一个HOC,但由于某种原因,传下来的所有道具都触发了反应警告。
Warning: Unknown event handler property `onSaveChanges`. It will be ignored.
我的所有属性都具有相同的语法(从小写开始,然后是大写:lowerUpper)。当然,如果我把它写成全小写,那么它不会触发任何警告,但是如果我使用重组的HOC,我应该用小写字母写出我的所有道具吗?
我的HOC:
import React from 'react'
import { withStateHandlers, withHandlers, withState, compose } from 'recompose'
const editableCell = (defaults) =>
compose(
withStateHandlers(
{ isEditing: false, value: ''},
{
toggleEditing: ({ isEditing, inputValue }) => defaultValue => ({
isEditing: true,
inputValue: isEditing ? inputValue : defaultValue
}),
onChange: () => event => ({
inputValue: event.target.value
}),
deactiveCell: () => () => ({
isEditing: false
})
}
),
withHandlers({
handleSave: ({
isEditing,
inputValue,
onSaveChanges,
deactiveCell,
}) => event => {
event.preventDefault()
//can validate before save...
deactiveCell()
return onSaveChanges(isEditing, inputValue)
}
})
)
export default editableCell
基本上我的所有属性都触发了这个警告(函数,或者只是一个简单的原语,基本上是任何东西[isEditing,inputValue,onChange,deactivateCell,onSaveChanges,handleSave ...等]
我想如何解决这个错误?它真的很烦人。
答案 0 :(得分:6)
问题与重构无关。根据{{3}}:
如果您尝试渲染DOM,则会触发unknown-prop警告 具有不被React识别为合法DOM的道具的元素 属性/属性。您应该确保您的DOM元素不会 有虚假的道具漂浮在周围。
您应该只将有效的道具传递给DOM元素。例如:
<强>不强>
function MyDiv(props) {
return <div {...props} />
}
<强>不要强>
function MyDiv({ onSaveChanges, inputValue, /** other invalid props **/, ...otherProps}) {
return <div {...otherProps} />
}
the React doc中有更多示例。