所以我正在使用一个组件 someone else wrote通过以下方式调用react-search...
<div>
<Search items={ITEMS} />
</div>
这会创建一个 <input>
里面 <div>
里面 <div>
。我需要添加 Prop onKeyDown={ this.myMethod }
到<input>
。实现这一目标的最佳方法是什么?我有一种感觉,编辑 node_modules 内的代码并不是答案。谢谢!
最佳答案
除非库专门提供了一种将 props 传递到其组件的子组件中的方法,否则没有其他方法可以做到这一点。 React 组件在设计上有点“不透明”,因此您无法处理它们的内部状态和子组件。因此,在这种情况下,您实际上必须编辑库的代码来适应这种情况。
然而,这并不是一件令人生畏的事情。只需将事件处理程序作为 prop 传递给库的组件,然后在库中查找 <input>
的位置即可。正在渲染元素并像往常一样为其提供事件处理程序。我必须以类似的方式编辑许多 React 库,而且这样做完全没问题。
编辑:实际上我应该补充一点,您可以绕过 React 并将事件处理程序直接添加到 input
使用纯 JavaScript 的元素。例如,在库组件的父级 componentDidMount
中和componentWillUnmount
您可以使用 addEventListener
分别添加和删除事件处理程序的函数或类似的。然而,当您可以在 React 内部做同样的事情但需要做更多的工作时,将变通方法组合到 React 自己的功能通常是一个坏主意。准确识别哪个input
也可能相当困难。您想要添加监听器的元素。
关于javascript - react : how to add a props to a component inside a library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735340/