[英]Passing props to nested routes in React Router 4. TypeError: render is not a function
我正在按照此答案創建這樣的嵌套路由
/--Home
|--campaigns
|--campaigns/:cid
Index.js
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>
,
document.getElementById('root'));
registerServiceWorker();
App.js
class App extends Component {
render() {
return (
<div>
<Route exact path="/" render={(props) => <Home foo="bar" {...props}/>}/>
<Route path="/campaigns" render={(props) => <Campaigns foo="bar" {...props}/>}/>
</div>
);
}
}
Home.js
const Home = () => (
<div>
Home
</div>
)
Campaigns.js
const Campaigns = () => (
<div>
<Route exact path="/campaigns" render={<div>Campaigns</div>}/>
<Route path="/campaigns/:cid" render={(props) => <Campaign {...props} foo="bar"/>}/>
</div>
)
Campaign.js
const Campaign = () => (
<div>
<Route path="/campaigns/:cid" render={<div>Campaign 1</div>}/>
</div>
)
我正在使用該方法,因為我無法使用該方法將道具傳遞給組件。
當/路由正常運行時,當我瀏覽到/ campaigns時,我得到:TypeError:render不是一個函數
該錯誤是不言自明的。 render
道具接受一個函數作為其值,而不是元素。 因此,只需將其更改為:
const Campaigns = () => (
<div>
<Route exact path="/campaigns" render={() => <div>Campaigns</div>}/>
<Route path="/campaigns/:cid" render={(props) => <Campaign {...props} foo="bar"/>}/>
</div>
);
const Campaign = () => (
<div>
<Route path="/campaigns/:cid" render={() => <div>Campaign 1</div>}/>
</div>
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.