我正在使用react样板文件,它在route.js中使用异步调用来提供组件。
在“/”路径中加载的组件定义为:
const SPoints=({actions,loading,error,regions,selectedRegion,region,regionLoading})=
组件中填充了这些值,例如region.name等。
路由代码为:
const getRootComponent = (nextState, cb) => {
import('containers/App')
.then(loadModule(cb))
.catch(errorLoading);
}
export default function createRoutes(store) {
// create reusable async injectors using getAsyncInjectors factory
const { injectReducer, injectSagas } = getAsyncInjectors(store);
return [{
path: '/',
name: 'SPoints',
getComponent(nextState, cb) {
getRootComponent(nextState, cb);
},
indexRoute: {
getComponent(nextState, cb) {
const importModules = Promise.all([
import('containers/SPoints/reducer'),
import('containers/SPoints/sagas'),
import('containers/SPoints'),
]);
const renderRoute = loadModule(cb);
importModules.then(([reducer, sagas, component]) => {
injectReducer('spoints', reducer.default);
injectSagas(sagas.default);
renderRoute(component);
});
importModules.catch(errorLoading);
}
}
}
SPoint收到的道具是如何传递给它的?我在代码中没有看到任何明显的组件是如何得到它的道具的...
嗯。我现在认为正在导入的sagas.js正在redux商店中设置值,但我仍然不知道这些道具是如何传递的。
简而言之,来自react-redux的连接高阶组件正在提供来自redux商店的那些道具。
然而,路由器指向的组件将被注入一些来自反应路由器的道具。
下面是一个react-boiler板的示例容器。请注意底部带有mapStateToProps
和mapDispatchToProps
的连接函数,它做的正是它听起来像的事情:将状态映射到正在连接[到redux的商店]的组件上的道具,并将操作分派到道具。
https://github.com/react-boilerplate/react-boilerplate/blob/master/app/containers/HomePage/index.js#L121
export function mapDispatchToProps(dispatch) {
return {
onChangeUsername: (evt) => dispatch(changeUsername(evt.target.value)),
onSubmitForm: (evt) => {
if (evt !== undefined && evt.preventDefault) evt.preventDefault();
dispatch(loadRepos());
},
};
}
const mapStateToProps = createStructuredSelector({
repos: makeSelectRepos(),
username: makeSelectUsername(),
loading: makeSelectLoading(),
error: makeSelectError(),
});
// Wrap the component to inject dispatch and state into it
export default connect(mapStateToProps, mapDispatchToProps)(HomePage);
我试图使用react router将props从app.jsx传递到某个路由组件,但出现以下错误
我需要通过使用路由器的组件道具。这是我的代码: 如您所见,我验证了我要传递给登录组件的道具。 当我记录道具时,未经验证的道具不存在。我做错了什么?我怎样才能正确地通过道具?我跟踪了文档和其他讨论。据我所知,这应该是可行的。react router和react router dom的版本为4.0.0
我对反应和试图理解如何传递道具很陌生。 首先,我设置了一个Navlink组件,该组件包含子类别属性: ,,都是从json文件中获取的,所以这部分是可以的。 每条路线的定义如下: 所以它呈现一个名为
我使用的反应与反应路由器的项目,我需要传递道具的子组件从路由。 我有这样的设置: App.js Home.js 问题是主组件总是给出错误“未定义”。我无法理解如何解决这个问题。如果我从Home.js中移除道具,组件渲染就很好。但当我尝试访问道具时,会出现错误。
我将如何让 调用的函数将数据传递给相应的路由组件? 在这种情况下,beforeEnter 的目的是确认有效的持有者令牌以 cookie 的形式存在。 目前,我让< code>beforeEnter在< code>/verify/auth上点击aws api网关,然后组件加载并调用< code>/list/repos上的dynamodb。问题是,两条路线都受到内置AWS api gatewayV2
英文原文: http://emberjs.com/guides/routing/asynchronous-routing/ 本节内容主要介绍一些路由的高级特性,以及路由是如何处理应用中的一些复杂异步逻辑的。 承诺简介 Ember在路由中处理异步逻辑的方案主要依赖于承诺(Promise)。简单地说,承诺就是代表了最后的值的对象。承诺可以被履行(成功的获得了最后的结果)也可以被拒绝(没有获得最后的结果