我想通过React Router将函数传递给子组件。我尝试了以下但它似乎不起作用。
class App extends Component {
constructor(props) {
super(props)
}
render() {
return (
<div className="App">
<div className="content">
<div className="centered-wrapper">
<Switch>
<Route exact path="/" component={Welcome} />
<Route path="/life" render={props => <Life sayHello = {this.sayHello()} />} />
</Switch>
</div>
</div>
);
}
}
export default App;
我想在Life组件中调用sayHello()
,如下所示:
<div className="hello">{ this.props.sayHello() } I'm <Link to="/life">Marco</Link>! Welcome to my hood.</div>
答案 0 :(得分:10)
替换:
<Route path="/life" render={props => <Life sayHello = {this.sayHello()} />} />
与
<Route path="/life" render={props => <Life sayHello = {this.sayHello} />} />
错误道具接收sayHello()
函数调用的结果而不是函数本身。
答案 1 :(得分:3)
不是传递函数,而是调用它并将返回的结果作为prop传递。
sayHello // function object
sayHello() // function call, evaluates to return
删除括号:
render={props => <Life sayHello={this.sayHello} />}
将来,请查看您在控制台中看到的任何错误,并将其添加到您的问题中。如果您尝试在sayHello
组件中调用Life
,请务必看到类似于此错误的错误:
Uncaught TypeError: undefined is not a function
有了这些信息,您可以自己找到问题,或者让任何想要帮助的人更清楚:)