【发布时间】:2017-07-08 11:25:31
【问题描述】:
我有一个自定义组件Foo,我想从外部触发其'bar'函数:
class Foo extends React.Component {
bar() { ... }
}
我正在渲染Foo 和一个button,其目的是触发Foo.bar():
render() {
return (
<Foo ...>
</Foo>
<Button onClick={I want to trigger Foo.bar()} />
);
}
我尝试过的事情:
- 将
<Button >移动到Foo中,然后在<Button/>中添加onClick的Foo's构造函数——onClick 的绑定不起作用——我看到它附加了,但<Button />仍然有效不触发onClick。 (或者,如果它可以工作,如何正确地做到这一点)?
不符合我要求的解决方案:
我看到一个potential solution 建议在整个
MyComponent中收听一次点击,然后进行一些DOM 查询以查找是否点击了实际按钮。但是,这对我不起作用,因为MyComponent确实不拥有这些按钮(这些按钮不是MyComponent.props.children),我更愿意集思广益一个不会强迫我的解决方案必须移动里面的按钮。Another potential solution 不起作用:我不能让
render()将<MyComponent />的值返回到var myComp,然后在<Button onClick={() => {myComp.blah()}} />内部,因为<Button />本身在@987654346 内部实例化@ 作为一个孩子! (而且,它们都在同一个 render() 调用中)Part b) #2(上),使用 React-Component 静态类方法,也不起作用:我需要在每个实例的基础上使用它。
Using app state (such as a store) 也不是我想要的——
MyComponent是一个可重复使用的小部件,不能绑定到特定的应用程序状态或监听任何特定的存储或存储操作。
有什么建议吗?
谢谢
【问题讨论】:
-
你可以去github.com/burakozturk16/pigeon看看
标签: javascript reactjs dynamic