在使用dva打包的时候本地开发由于没有对后端接口进行代理,导致返回回来的content-type值为html/text,然后ajax请求后端出现 Sorry, we need js to run correctly! ? 参考 解决方案
1:ReRes使用
chrome代理的一款工具
If URL match: 要代理环境的资源地址
Response: 本地打包之后的地址
2: redux-actions
createAction 可以接受三个参数
@param type action的类型
@param actionCreator 需要创建的action函数
@param metaCreator action的属性
@returns {Function}
暂时在项目中就用到了type这个参数具体代码如下
在action.js定义
export const ACIONT_CREATE = "ACIONT_CREATE"; //定义一个type变量
export actionCreate = createAction(ACTION_CREATE);
然后在actionCreator.js里面将跟后端交互的异步数据或者页面上的同步数据通过dispatch这个action
import { actionCreate } from "./action.js";
const getData = (param) => async (dispatch) => {
// request 封装的请求数据方法
const data = request({ api: "xxx' });
dispatch(actionCreate(data));
}
在reducer里面处理Action
redux-actions 里面有handleAction, handleActions来处理不同的action
普通的处理action方法要写太多的switch case语句,比较繁琐
handleActions采用了类似于对象的写法,他接收两个参数 初始的状态值跟包含着所有Action的值
import { ACIONT_CREATE } from './actions';
export default handleActions(
{
[ACIONT_CREATE]: (state, action) => {
return { ...state, ...action.payload };
},
},
{ data: [] }
);