我正在使用Redux和React-Router进行React应用程序
例如,我有600万个个人资料页
/id1
/id2
...
/id6000000
它们都应由ProfilePage组件绘制。所以我做了一些事情:
class ProfilePage extends Component {
componentDidMount() {
httpApi.getProfileData(this.props.match.params.id)
.then(response => {
this.setState({
page: response
})
})
}
...
}
效果很好。
但接下来我想对相同的事情使用Redux(为了便于阅读,我将直接调用dispatch)。
此外,我们还需要理解,我们不需要全局存储中的页面数据,除非在底层组件中使用连接道具(我们可以很容易地用createContext替换它)。我们只是使用Redux在外太空移动逻辑和请求。
class ProfilePage extends Component {
static propTypes = {
page: propTypes.object // from connect
}
componentDidMount() {
dispatch({type: 'PROFILEPAGE_LOADING_START', id: this.props.match.params.id});
}
...
}
中间件调用reducer后设置存储:
PROFILEPAGE_LOADING_SUCCESS:
return {
profilePage: action.page
}
所以我想现在一切都很好,除了一件事。
例如,我们使用id1停留在profile页面,然后转到id3,我们的react-router卸载profilePage[id1]并在加载新数据之前挂载profilePage[id3],并用旧的[id1]数据呈现它,因为我们没有从存储区中删除旧的数据。嗯。
我知道我们可以在componentDidMount实现页面键、加载状态或清除状态(但它仍然在挂载之前呈现旧数据),但这有点难看,而且有副作用。
问题:最佳做法是什么?
第二,如果我想在历史推送之前在链接点击时实现预取数据加载。它很容易实现,不需要Redux,只需使用历史推送状态,并在ComponentDidMount中使用该状态。
但如果我用Redux那它绝对是可怕的事情。首先,我需要通过任何丑陋的方式解决第一个问题,其次,我需要将存储中的数据变化连接在一起,并由react路由器呈现。否则需要实现shouldComponentUpdate逻辑,它也很难看,而且在某些情况下不会触发。
我试过很多解决办法,但都很难看。
问题2:解决方案是什么?
英文原文: http://emberjs.com/guides/routing/loading-and-error-substates/ 除了异步路由指南中描述的技术外,Ember路由还提供了通过使用error和loading子状态,来实现自定义路由间的异步过渡。 loading子状态 考虑下面的情形: 1 2 3 4 5 App.Router.map(function() { this.r
⚠️ 只有生产环境才有此功能 ⚠️ Examples Prefetching Next.js 有允许你预加载页面的 API。 用 Next.js 服务端渲染你的页面,可以达到所有你应用里所有未来会跳转的路径即时响应,有效的应用 Next.js,可以通过预加载应用程序的功能,最大程度的初始化网站性能。查看更多. Next.js 的预加载功能只预加载 JS 代码。当页面渲染时,你可能需要等待数据请求。
Redux提倡使用具有单一状态的单一存储。但是,使用react router,您可以获得多个页面,每个页面都有自己的顶级根组件。 一个人应该如何用一个有多个页面的反应路由器应用程序连接redux?React-router 1.0不再允许您向路由传递道具,因此使路由器成为包含所有页面状态的顶级组件不再可能也不可行。
问题现象 页面生命周期相关问题,在页面渲染前从接口获取数据,渲染时将数据渲染到页面上。
问题内容: 是否可以基于路由组动态加载控制器,js文件和模板?伪代码不起作用: 我已经看到了很多这样的问题,但是没有一个问题基于路由组加载js文件/控制器。 问题答案: 我设法解决了受@ calebboyd,http : //ify.io/lazy-loading-in-angularjs/ 和http://weblogs.asp.net/dwahlin/archive/2013/05/22/dy
数据预取存储容器 (Data Store) 在服务器端渲染(SSR)期间,我们本质上是在渲染我们应用程序的"快照",所以如果应用程序依赖于一些异步数据,那么在开始渲染过程之前,需要先预取和解析好这些数据。 另一个需要关注的问题是在客户端,在挂载 (mount) 到客户端应用程序之前,需要获取到与服务器端应用程序完全相同的数据 - 否则,客户端应用程序会因为使用与服务器端应用程序不同的状态,然后导致