react + antiDesign开发中遇到的问题记录

一:页面中子路由失效:

antiDesign的官方实例中,会把路由重复的地方给去重,而且路由匹配模式不是严格模式。所以我们需要在util.js修改两个地方

1:把路由匹配模式改为严格:

export function getRoutes(path, routerData) {
let routes = Object.keys(routerData).filter(routePath =>
routePath.indexOf(path) === 0 && routePath !== path);
// Replace path to '' eg. path='user' /user/name => name
routes = routes.map(item => item.replace(path, ''));
// Get the route to be rendered to remove the deep rendering
const renderArr = getRenderArr(routes);
// Conversion and stitching parameters
const renderRoutes = renderArr.map((item) => {
// const exact = !routes.some(route => route !== item && getRelation(route, item) === 1);
return {
...routerData[`${path}${item}`],
key: `${path}${item}`,
path: `${path}${item}`,
exact: true,
};
});
return renderRoutes;
}

2:修改路由去重

function getRenderArr(routes) {
const renderArr = [];
renderArr.push(routes[0]);
/** *去掉重复判断,满足/user,/user/detail类似URL的情况 */
// for (let i = 1; i < routes.length; i += 1) {
// let isAdd = false;
// // 是否包含
// isAdd = renderArr.every(item => getRelation(item, routes[i]) === 3);
// // 去重
// renderArr = renderArr.filter(item => getRelation(item, routes[i]) !== 1);
// if (isAdd) {
// renderArr.push(routes[i]);
// }
// }
for (let i = 1; i < routes.length; i += 1) {
renderArr.push(routes[i]);
}
return renderArr;
}

  

二:表单类问题

1:双向数据绑定没有效果

错误代码:(这里的input被div包着)

endTime: {
name: '结束日期',
rule: {
rules: [],
initialValue: fileds && fileds.endTime,
},
component: () => {
return (
<div style={{ display: 'flex' }}>
<Input placeholder="请输入" style={{ borderRadius: 0 }} />
</div>
);
},
},

正确代码: component返回的表单元素不要有其他元素包着

endTime: {
name: '结束日期',
rule: {
rules: [],
initialValue: fileds && fileds.endTime,
},
component: () => {
return (
<Input placeholder="请输入" style={{ borderRadius: 0 }} />
);
},
},

  

三:父子组件传值的问题

1:子组件在接收父组件渲染的时候,只初始化渲染一次,父组件值改变后,子组件不会重新渲染。

错误代码: 在子组件的willmount或者didmount接收了父组件的值。

componentDidMount() {
const { ProductItemData } = this.props;
this.setState({
ProductItemData,
});
}

正确代码: 在componentWillReceiveProps中接收父元素数据。

componentWillReceiveProps(nextProps) {
const { ProductItemData } = this.props;
this.setState({
ProductItemData,
});
}

  

四:编写组件

1:组件使用默认属性defaultProps

const MyFunctionalComponent=(props)=>{
return (
<div>
<p>{props.name}</p>
</div>
);
} MyFunctionalComponent.defaultProps={
name:'default name'
};

  

五:请求

1:如何在axios拦截时修改headers中的值(例如多语言)

axios.interceptors.request.use(
(config) => {
const config2 = config;
config2.timeout = 30000; //eslint-disable-line
config2.headers['Accept-language'] = 'USSSSS';
return config2;
},
(error) => {
// Do something with request error
return Promise.reject(error);
}
);

如果这里直接操作config会报 no-param-reassign 的错误。

react + antiDesign开发中遇到的问题记录的更多相关文章

  1. React Native开发中自动打包脚本

    React Native开发中自动打包脚本 在日常的RN开发中,我们避免不了需要将我们编写的代码编译成安装包,然后生成二维码,供需要测试的人员扫描下载.但是对于非原生的开发人员来说,可能不知如何使用X ...

  2. react项目开发中遇到的问题

    前言 作为一个前端爱好者来说,都想在react上一试生手,那么在搭建react项目开发时,肯定会有这样或者那样的问题,尤其是对初学者来说,下面就个人在开发过程中遇到的问题总结一下,好在有google帮 ...

  3. React在开发中的常用结构以及功能详解

    一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...

  4. 个人理解---在开发中何时加入日志记录功能[java]

    是这样的:俩个月前做的一个小功能,今天经理突然问我这个'清除复投记录'功能是不是我做的,我说是,很久以前了.他说昨天一个客户找过来了,后台把人家的复投记录清除掉了,不知道何时清除的,我记得当时做的时候 ...

  5. React native开发中常见的错误

    react native环境搭建请移步:react native环境搭建 这里说说react native创建完成之后,运行中出现的常见问题, 问题1: java.lang.RuntimeExcept ...

  6. 【Django】DRF开发中的一些技巧记录

    问题记录 问题1:信号没有按预期触发 描述 编写了信号函数后,并没有如预期一般在必要时候触发,函数如下: @receiver(signals.post_save, sender=Prometheus) ...

  7. Ionic开发中常见问题和解决方案记录

    1npm按装包失败 更换源:npm config set registry https://registry.npm.taobao.org 或者使用cnpm sudo npm install -g c ...

  8. Unity3d开发中遇到的问题记录

    安装Unity unity官方提供免费的community版本,功能健全,下载时还有Visual Studio,非常方便. 官方文档 Unity的官方文档非常权威!详尽!可靠!很多关于函数细节的疑惑都 ...

  9. react 开发中的问题简记

    1.什么时候用props 什么时候用state ? 不能使用props:当页面组件存在URL跳转问题时候,原因:若单独刷新,他会报错,拿不到前面的数据: 使用props场景:当组件为页面组件的一部分即 ...

随机推荐

  1. golden gate 加initial load 在rac 上的配置

    前言goldengate 11g 在oracle 11g rac 上的配置 (源是rac+asm , 目标是单数据库实例) 源端: 1. 配置tnsnames [oracle@rac1 admin]$ ...

  2. cmd导出oracle数据库数据

    今天弄了下oracle数据库导入导出命令exp,imp 首先这个命令是在cmd直接执行,不是sqlplus登录后再执行,见下图: 再次,注意结尾不能有分号(;): exp scott/scott@su ...

  3. mysql命令框中向表中插入中文字符,在可视化工具MySQL Workbeach或phpMyAdmin中不显示或显示乱码的问题解决

     一.问题导出 在刚刚开始学习MySQL数据库应用与开发这门课程的时候,老师建议我们使用可视化工具MySQL Workbeach进行数据库的相关管理,但是小编在mysql命令框使用insert命令向表 ...

  4. Activity Monitor 闪退 & 无法进入睡眠

    情况描述 黑苹果主机突然无法进入睡眠. 考虑到可能是后台程序阻碍了系统正常进入睡眠, 于是想要通过Activity Monitor查看系统的活动情况,然而,Activity Monitor闪退. 重 ...

  5. hadoop体系架构

    1.1          Hadoop 概念:hadoop是一个由Apache基金会所开发的分布式系统基础架构.是根据google发表的GFS(Google File System)论文产生过来的. ...

  6. go 交叉编译,部署

    go web 部署 交叉编译 go 语言有个强大的地方就是 交叉编译 windows --cmd 设置环境变量-mac SET CGO_ENABLED=0 SET GOOS=darwin SET GO ...

  7. 《记忆匣子》——网络编程jsp网页制作复习习笔记1

    内容都在图里 哈哈哈 <%@ page language="java" contentType="text/html; charset=utf-8" pa ...

  8. 如何查看PostgreSQL的checkpoint 活动

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页 作者:高健@博客园 luckyjackgao@g ...

  9. 苏州优步uber司机奖励政策(持续更新)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. jQuery学习-尺寸坐标

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...