作者回复: 放到store里
作者回复: 第一,不建议在 saga 中使用 history 进行跳转。saga 中应该都是没有副作用的纯函数,可以在调用 action 的地方根据状态变化在组件中进行跳转。第二,如果要在组件之外使用 history,可以创建一个全局唯一的 history 对象,设置 react router 时使用这个 history 对象,其它要用的地方也都使用之,这样就不需要依赖组件了。例如:http://demo.rekit.org/element/src%2Fcommon%2Fhistory.js/code 就是 Rekit Studio 中使用的全局唯一 history 实例。
作者回复: 这个是开发时报的错,应该和 react-router 版本有关系。
作者回复: 是的,公共部分可以放在 App 里。也可以有二级或更深级的 page container,比如自带的 examples 示例,公共部分就是左边的菜单。
作者回复: 额,不太理解你说的问题|
作者回复: 这应该是服务器端没有做 history fallback, 可以在服务器端实现一下。或者前端使用 HashRouter 替代 BrowserRouter。
作者回复: 刷新404一定是服务器端的问题,服务器端需要支持 history api fallback 才能正确的把路由交给前端处理。
作者回复: 关于路由跳转问题,在 v4 中可以用React Router 提供的 Prompt 组件来提示用户确认离开页面。不过 Prompt 只能是完全离开当前应用。在应用内的页面切换需要自己在跳转的代码处加判断。并不像之前的 v2, v3 版本可以用 onEnter, onLeave 的钩子。这个是 React Router v4 的一个缺点。
作者回复: 跳转可以用history.push/replace(‘mypath’).