dva使用心得

组件在异步数据到来前已经完成初始化,是致使constructor中没法取到所需数据的缘由。因此最直接的方法,就是修改组件建立的时间vue

//把原来的组件内部控制显示
/* <ComponentName show={modelName.show}/> */
//更改成状态直接控制组件是否存在
{
  modelName.show && <ComponentName/>
}
//或者
{
  modelName.show ? <ComponentName/> : null
}

//或者更严谨一点
//因为项目中加入了用户数据获取失败,需从新登陆,因此也就没有加上后面这个
{
  modelName.show && modelName.needData && <ComponentName/>
}react

目标组件不会在页面加载时就初始化vuex

而是在用户点击控制按钮,须要使用组件时,才初始化异步

 问题and心得:函数

1.初始化数据是怎么执行的。this

2.connect怎么传输数据的。url

3.何时写全局model,何时写局部model。spa

4.何时会是同步,何时使用同步。component

5.可否使用@connect({sms})来把model层的数据传递到当前组件。经过this.props.sms能够获取到model里sms.js中的state数据)orm

6.流程:dispatch时候models里面的effect,models中的effect会yield call已经import进来的service里面的action,而后service里面,action会调用request,把url和数据传输给后台,而后在models里面yield完毕后,能获取到responce传过来的数据。

7.model至关于vue的vuex,里面包含了但向数据流的全部的控制

8.在vue中咱们通常定义一个全局的头部标题字段,而且在mounted中调dispatch改变,但在dva的model中这段分为了两个部分,其中effects是异步修改数据时调用的, 也就是在react的componentDidMount的生命周期里面须要调用的是异步的effects的action,但若是是用户操做的某个方法是,能够直接调用reducers里面的action

九、注意若是在组件中要调用dispatch的话,必须导入connect,而且注入,才能够调用,否则会报不存在的方法

十、dva规定比较强制,若是你是异步的方法必须调用effects的action,绝对不能调用同步的reducers,不然会报错,但同步的操做能够调用异步的effects,但由于是异步的操做,数据有时不会直接变过来,若是是操做的话,建议用reducers的同步

11.call:执行异步函数(以异步的方式调用函数)

put:发出一个 Action,相似于 dispatch

select:从state中获取相关的数据

take 获取发送的数据

12.须要数据时,是否须要在componentDidMount里面去请求。

13.query是请求的哪儿

14.延迟加载

1.可否使用@connect({sms})来把model层的数据传递到当前组件。经过this.props.sms能够获取到model里sms.js中的state数据)

 

2.流程:dispatch时候models里面的effect,models中的effect会yield call已经import进来的service里面的action,而后service里面,action会调用request,把url和数据传输给后台,而后在models里面yield完毕后,能获取到responce传过来的数据

@font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋体"; }@font-face { font-family: "Calibri"; }p.MsoNormal { margin: 0pt 0pt 0.0001pt; text-align: justify; font-family: Calibri; font-size: 10.5pt; }span.msoIns { text-decoration: underline; color: blue; }span.msoDel { text-decoration: line-through; color: red; }div.Section0 { }

相关文章
相关标签/搜索