Giter Club home page Giter Club logo

Comments (13)

nikogu avatar nikogu commented on May 17, 2024

我的理解:

登陆状态不应该用 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.

sorrycc avatar sorrycc commented on May 17, 2024

这类逻辑应该放在 effects 里吧。

from dva.

codering avatar codering commented on May 17, 2024

@sorrycc login是单独一个model还是放入user model 好?

from dva.

t04041143 avatar t04041143 commented on May 17, 2024

我遇到的问题是使用onEnter加载子路由上没反应,加到根路由上才行,何解?

from dva.

sorrycc avatar sorrycc commented on May 17, 2024

@t04041143 是 bug,已修复,还没发。

from dva.

t04041143 avatar t04041143 commented on May 17, 2024

好的,期待

from dva.

t04041143 avatar t04041143 commented on May 17, 2024

@sorrycc 还想问下:如果我的state中存有user数据,如果这些我想通过路由的onEnter事件,访问user信息,根据user信息做判断,该怎么做(不用connect的办法,是否有store变量可以获取或者传递进来)

from dva.

sorrycc avatar sorrycc commented on May 17, 2024

还没用过 react-router 的 onEnter,我需要找时间先了解下。

from dva.

nikogu avatar nikogu commented on May 17, 2024

@t04041143 我觉得你可以通过 app._store 访问到当前的状态 const app = dva(),试试

from dva.

t04041143 avatar t04041143 commented on May 17, 2024

@nikogu 我在其他文件调用获取app为一个html tag

from dva.

nikogu avatar nikogu commented on May 17, 2024

@t04041143 能否详细说明下,dva() 返回的应该是如下一个 object

https://github.com/dvajs/dva/blob/master/src/createDva.js#L34

from dva.

t04041143 avatar t04041143 commented on May 17, 2024

@nikogu 没错,在定义dva的文件里,你看到的是一个object,但是我是在另一个文件( router.js)里直接饮用app这个全局变量,就变成tag了,貌似被覆盖了

from dva.

nikogu avatar nikogu commented on May 17, 2024

@t04041143 这个问题是否已经解决了?如果没有麻烦再详细说一下,贴个代码?

from dva.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.