Comments (13)
我的理解:
登陆状态不应该用 state
来管理,当然也是可以的:
import { connect } from 'dva';
const RouterContainer = (props)=>{
console.log(props); // 包含users信息
return (
<Router history={props.history}>
<Route path="/" component={HomePage} />
<Route path="/users" component={Users} onEnter={()=>{ }}/>
<Route path="*" component={NotFound} />
</Router>
);
}
function mapStateToProps({ users }) {
return {users};
}
export default connect(mapStateToProps)(RouterContainer);
这样会报 warning browser.js:49 Warning: [react-router] You cannot change <Router routes>; it will be ignored
所以这也说明了一个问题,connect
了组件以后,就会通过props更新而更新,我想你一定不想你的路由跟这个扯上关系,所以该怎么办呢?
我觉得用一个全局变量管理就挺好 另,请求验证也不错 ,不过要注意可能会导致页面闪烁(这个可以体验优化的,比如先透明页面,然后数据来了渐变,没权限跳404)
from dva.
这类逻辑应该放在 effects 里吧。
from dva.
@sorrycc login是单独一个model还是放入user model 好?
from dva.
我遇到的问题是使用onEnter加载子路由上没反应,加到根路由上才行,何解?
from dva.
@t04041143 是 bug,已修复,还没发。
from dva.
好的,期待
from dva.
@sorrycc 还想问下:如果我的state中存有user数据,如果这些我想通过路由的onEnter事件,访问user信息,根据user信息做判断,该怎么做(不用connect的办法,是否有store变量可以获取或者传递进来)
from dva.
还没用过 react-router 的 onEnter,我需要找时间先了解下。
from dva.
@t04041143 我觉得你可以通过 app._store
访问到当前的状态 const app = dva()
,试试
from dva.
@nikogu 我在其他文件调用获取app为一个html tag
from dva.
@t04041143 能否详细说明下,dva() 返回的应该是如下一个 object
https://github.com/dvajs/dva/blob/master/src/createDva.js#L34
from dva.
@nikogu 没错,在定义dva的文件里,你看到的是一个object,但是我是在另一个文件( router.js)里直接饮用app这个全局变量,就变成tag了,貌似被覆盖了
from dva.
@t04041143 这个问题是否已经解决了?如果没有麻烦再详细说一下,贴个代码?
from dva.
Related Issues (20)
- dva 的connect和React.memo函数无法连接,代码如下:cont App=()=>{ return <div></div>} export default connect(null,React.memo(App)),这样写页面直接报错 HOT 3
- state直接存贮dom节点,redux页面会很卡顿 HOT 1
- dva注册model HOT 3
- pre-commit hook failed HOT 1
- dva现在不支持react17+版本吗,后续会有支持吗 HOT 4
- 支持 es最新版 HOT 1
- [Feature Request] dispatch可以传入一个数组吗? HOT 1
- 项目不维护了,把你们的备选状态库都拿出来 HOT 5
- "immer": "^8.0.4",版本过低,扫描有安全问题,能不能升级一下到9.0.6 HOT 15
- `dva-core` CJS build relies on a `regeneratorRuntime` global, but it isn't defined HOT 1
- 现在都没人维护了么,react都更新N个版本了,还是19年更新后,路由都到了v6版本了 HOT 7
- 为什么不使用HashRouter ???
- React已经到了v18,请问dva有没有升级的计划?
- dva subscriptions不生效 HOT 5
- dva 的正式版本才 2.4.1 ,怎么 dva-immer 的 peerDependencies 里的 dva 版本已经是 2.5.0 了? HOT 1
- 如何在reducer执行完后用更新后的state来执行effects HOT 1
- react 18 下,dva 的状态更新可能延迟于dispatch.then HOT 2
- dva正式版本目前是2.4.1 不支持hooks(useSelector和useDispatch) 2.6.0正式版本啥时候发布呀 我看2.6.0 后面的版本支持hooks了
- 可以在单个reducer里获取全局state吗
- 有办法兼容react18吗?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dva.