javascript - react : how to add a props to a component inside a library?

标签 javascript reactjs

所以我正在使用一个组件 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/

相关文章:

javascript - 索引不是连续整数的数组长度

android - OneSignal 表示消息已发送但没有推送通知发送到设备

node.js - 从 Axios/React 将 json POST 到 Node/Express 服务器时出现问题

javascript - FIrefox 不会阻止发送的提交事件

javascript - Angular2 http.get 代码不起作用

javascript - 如何在jquery中找到具有特定类名的行?

php - 以编程方式自动填写和提交表单

node.js - Html Webpack插件: Child Compilation Failed error in React page

javascript - 如何取消 ComponentWillUnmount 中的所有请求?

javascript - 关于缩小首次输入文本的文本框问题