【问题标题】:React HOC DOM properties are triggering 'Unknown event handler property'React HOC DOM 属性正在触发“未知事件处理程序属性”
【发布时间】:2018-10-14 15:47:36
【问题描述】:

我刚刚使用 recompose 制作了一个 HOC,但由于某种原因,所有传递的 props 都触发了 React 警告。

Warning: Unknown event handler property `onSaveChanges`. It will be ignored.

我所有的属性都具有相同的语法(从小写开始,然后是大写:lowerUpper)。当然,如果我把它写成全小写,那么它不会触发任何警告,但是如果我使用带有 recompose 的 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...等]

我想如何解决这个错误?真的很烦人。

【问题讨论】:

    标签: javascript reactjs higher-order-components recompose


    【解决方案1】:

    该问题与重构无关。根据the React doc

    如果您尝试渲染 DOM,将触发 unknown-prop 警告 带有一个未被 React 识别为合法 DOM 的 prop 的元素 属性/属性。你应该确保你的 DOM 元素不 有虚假的道具漂浮在周围。

    您应该只将有效的道具传递给 DOM 元素。例如:

    不要

    function MyDiv(props) {
      return <div {...props} />
    }
    

    function MyDiv({ onSaveChanges, inputValue, /** other invalid props **/, ...otherProps}) {
      return <div {...otherProps} />
    }
    

    the React doc中有更多例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 2020-09-23
      • 2022-01-17
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      相关资源
      最近更新 更多