Przekaż funkcję przez React Router


Chcę przekazać funkcję do komponentu podrzędnego za pośrednictwem React Router. Wypróbowałem następujące, ale wydawało się, że nie działa.
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>


);
}
}export default App;

Chciałem wywołać
sayHello ()
na komponencie Life w następujący sposób:
<div className="hello">{ this.props.sayHello() } I'm <Link to="/life">Marco</Link>! Welcome to my hood.

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zastąpić:
<Route path="/life" render={props => <Life sayHello = {this.sayHello()}/>}/>

od
<Route path="/life" render={props => <Life sayHello = {this.sayHello}/>}/>

Błędne właściwości uzyskują wynik wywołania funkcji
sayHello ()
zamiast samej funkcji.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zamiast przekazywać funkcję, wywołujesz ją i przekazujesz zwrócony wynik jako właściwość.
sayHello// function object
sayHello()// function call, evaluates to return

Usuń wsporniki:
render={props => <Life sayHello={this.sayHello}/>}

W przyszłości spójrz na wszelkie błędy, które zobaczysz w konsoli i dodaj je do swojego pytania. Jeśli próbowałeś wywołać
sayHello
w komponencie
Life
, prawdopodobnie zobaczyłeś błąd podobny do tego:
Uncaught TypeError: undefined is not a function

Dzięki tym informacjom możesz samodzielnie znaleźć problem lub wyjaśnić go osobom próbującym pomóc :)

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się