【发布时间】:2018-11-28 09:56:28
【问题描述】:
我正在尝试实现功能,其中每个 Route 将首先等待一些 ajax 承诺解决,然后才会呈现路由。我看到onEnter已经不存在了,所以我正在尝试渲染方法。
我的路线是这样定义的:
{cmsRoutes.map((route, idx) => {
console.log(route.resolve)
return route.component ? (<Route key={idx} path={route.path} exact={route.exact} name={route.name} render={props =>{
route.resolve()
.then(({data})=>{
console.log(data)
return (
<route.component {...props} />
)
})
} } />)
: (null);
},
)}
如您所见,它只是遍历某个数组,该数组包含每个路由的数据。路由对象的字段之一是“resolve”,它指向一个函数,该函数返回一个承诺。喜欢这个:
const resolvemanageContactApplications = ()=> {
return ajax('/contact')
};
执行此操作时,我收到以下错误:
Route(...): 渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null。
这当然会发生,因为在执行 ajax 时,路由没有返回任何内容。问题:我怎样才能让 React 路由器 4 等待承诺解决?必须有某种方式。我记得 AngaulrJS UI-Router 实际上有一些“解析” api。
【问题讨论】:
标签: javascript reactjs react-router