Finora, l'entità della mia conoscenza su come sono passati da un componente all'altro tramite parametri è la seguenteCome reagisce il router passa i parametri ad altri componenti tramite oggetti di scena?
// iniziare: estensione della mia conoscenza
Supponiamo esiste qualche variabile di stato chiamato topic
in A.jsx. voglio passare questo fino a B.jsx, così ho eseguire il seguente
B = require('./B.jsx')
getInitialState: function() {return {topic: "Weather"}}
<B params = {this.state.topic}>
In B.jsx posso poi fare cose come
module.exports = React.createClass({
render: function() {
return <div><h2>Today's topic is {this.props.params}!</h2></div>
}
})
che quando sono chiamati renderà "l'argomento di oggi è il tempo! "
// fine: estensione della mia conoscenza
Ora, sto attraversando un tutorial su reagiscono-router con il seguente codice frammenti
topic.jsx:
module.exports = React.createClass({
render: function() {
return <div><h2>I am a topic with ID {this.props.params.id}</h2></div>
}
})
percorsi .jsx:
var Topic = require('./components/topic');
module.exports = (
<Router history={new HashHistory}>
<Route path="/" component={Main}>
<Route path = "topics/:id" component={Topic}></Route>
</Route>
</Router>
)
header.jsx:
renderTopics: function() {
return this.state.topics.map(function(topic) {
return <li key = {topic.id} onClick={this.handleItemClick}>
<Link to={"topics/" + topic.id}>{topic.name}</Link>
</li>
})
}
dove this.state.topics
è un elenco di argomenti tratti dall'imgur API tramite Reflux.
La mia domanda è: qual è il meccanismo è params
passato per props
per topic.jsx? In nessuna parte del codice vedo un idioma come espresso nella sezione precedente sulla "portata della mia conoscenza" vale a dire. non c'è <Topic params = {this.state.topics} />
in routes.jsx o header.jsx. Collegamento allo full repo here. I documenti React-router dicono che params è "parsed out of the original URL's pathname". Questo non ha risonanza con me.
grazie per questa risposta. Sono sempre curioso di sapere come si fa a scavare sotto il cofano per cose del genere. è stato questo per esperienza, o l'hai trovato nei documenti? in tal caso, per favore, puoi indicarmi la posizione esatta? – thetrystero
Ho appena analizzato l'implementazione a: https://github.com/rackt/react-router/tree/master/modules –
funziona correttamente ma su quell'URL tutti i miei collegamenti e script diventano 404. Per favore aiuto – Anil