我知道有类似的问题,但他们都没有一个令人费解的答案,因为这个问题会影响很多使用组件包装的人 .

假设我有一个包装在像React-Motion的Spring包装器中的组件 . What is an elegant react-ish way of accessing the wrapped react component e.g. in a mouse event handler placed higher in the structure?

没有包装器,在示例中我已经看到它是通过将child的id绑定到parent的render方法中的处理程序然后通过parent.refs [id]访问子节点来完成的 . 我至少可以想到几个丑陋的解决方法,比如:

  • 将相同的ref id传递给包装器并使用一个返回this.refs [id] .refs [id]的辅助方法

  • 将包装物放在结构中较低的位置,例如将 Spring 放在我的子组件中,而不是将子包装在其中 .

  • 在包装器上复制子道具(虽然不能访问真实的东西) .

但有一个典型的解决方案吗?我觉得拥有一个只增加一些功能的包装器不应该如此容易地破坏父母和孩子之间的沟通 .