我想从其他组件触发react组件。最好的方法是什么?我不想在redux商店上创建像"shouldShowMenu"这样的新标志。我在考虑react的静态方法,但我不是react的专家。
import Menu from './component/menu'
const clickfeed = () => {Menu.staticClickEvent()}
<Provider>
<Menu>
<Feed onClick={clickfeed}/>
</Provider>
我可以这样使用静态方法吗?我应该使用静态方法改变组件的状态吗?
您应该继续在redux存储中创建shouldShowMenu
标志。一旦组件以这种方式交互,它就是一个应用程序状态。一开始看起来有点过分,但是一旦你开始拥有一个跨组件共享的值,这将为你省去很多麻烦!
您不需要redux
。您可以使用ref
来完成此操作。希望能有所帮助!
<script src="https://unpkg.com/babel-core@5.8.38/browser.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>
<script type="text/babel">
//component 1
var Hello = React.createClass({
func: function() {
console.log('I'm inside Hello component')
},
render: function() {
return <div > Hello World< /div>;
}
});
//component 2
var Hello2 = React.createClass({
componentDidMount(){
//calling the func() of component 1 from component 2 using ref
this.refs.hello.func()
},
render: function() {
return <Hello ref="hello"/>;
}
})
ReactDOM.render( < Hello2 / > ,
document.getElementById('container')
);
</script>