react + antiDesign开发中遇到的问题记录
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开发中遇到的问题记录的更多相关文章
- React Native开发中自动打包脚本
React Native开发中自动打包脚本 在日常的RN开发中,我们避免不了需要将我们编写的代码编译成安装包,然后生成二维码,供需要测试的人员扫描下载.但是对于非原生的开发人员来说,可能不知如何使用X ...
- react项目开发中遇到的问题
前言 作为一个前端爱好者来说,都想在react上一试生手,那么在搭建react项目开发时,肯定会有这样或者那样的问题,尤其是对初学者来说,下面就个人在开发过程中遇到的问题总结一下,好在有google帮 ...
- React在开发中的常用结构以及功能详解
一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...
- 个人理解---在开发中何时加入日志记录功能[java]
是这样的:俩个月前做的一个小功能,今天经理突然问我这个'清除复投记录'功能是不是我做的,我说是,很久以前了.他说昨天一个客户找过来了,后台把人家的复投记录清除掉了,不知道何时清除的,我记得当时做的时候 ...
- React native开发中常见的错误
react native环境搭建请移步:react native环境搭建 这里说说react native创建完成之后,运行中出现的常见问题, 问题1: java.lang.RuntimeExcept ...
- 【Django】DRF开发中的一些技巧记录
问题记录 问题1:信号没有按预期触发 描述 编写了信号函数后,并没有如预期一般在必要时候触发,函数如下: @receiver(signals.post_save, sender=Prometheus) ...
- Ionic开发中常见问题和解决方案记录
1npm按装包失败 更换源:npm config set registry https://registry.npm.taobao.org 或者使用cnpm sudo npm install -g c ...
- Unity3d开发中遇到的问题记录
安装Unity unity官方提供免费的community版本,功能健全,下载时还有Visual Studio,非常方便. 官方文档 Unity的官方文档非常权威!详尽!可靠!很多关于函数细节的疑惑都 ...
- react 开发中的问题简记
1.什么时候用props 什么时候用state ? 不能使用props:当页面组件存在URL跳转问题时候,原因:若单独刷新,他会报错,拿不到前面的数据: 使用props场景:当组件为页面组件的一部分即 ...
随机推荐
- golden gate 加initial load 在rac 上的配置
前言goldengate 11g 在oracle 11g rac 上的配置 (源是rac+asm , 目标是单数据库实例) 源端: 1. 配置tnsnames [oracle@rac1 admin]$ ...
- cmd导出oracle数据库数据
今天弄了下oracle数据库导入导出命令exp,imp 首先这个命令是在cmd直接执行,不是sqlplus登录后再执行,见下图: 再次,注意结尾不能有分号(;): exp scott/scott@su ...
- mysql命令框中向表中插入中文字符,在可视化工具MySQL Workbeach或phpMyAdmin中不显示或显示乱码的问题解决
一.问题导出 在刚刚开始学习MySQL数据库应用与开发这门课程的时候,老师建议我们使用可视化工具MySQL Workbeach进行数据库的相关管理,但是小编在mysql命令框使用insert命令向表 ...
- Activity Monitor 闪退 & 无法进入睡眠
情况描述 黑苹果主机突然无法进入睡眠. 考虑到可能是后台程序阻碍了系统正常进入睡眠, 于是想要通过Activity Monitor查看系统的活动情况,然而,Activity Monitor闪退. 重 ...
- hadoop体系架构
1.1 Hadoop 概念:hadoop是一个由Apache基金会所开发的分布式系统基础架构.是根据google发表的GFS(Google File System)论文产生过来的. ...
- go 交叉编译,部署
go web 部署 交叉编译 go 语言有个强大的地方就是 交叉编译 windows --cmd 设置环境变量-mac SET CGO_ENABLED=0 SET GOOS=darwin SET GO ...
- 《记忆匣子》——网络编程jsp网页制作复习习笔记1
内容都在图里 哈哈哈 <%@ page language="java" contentType="text/html; charset=utf-8" pa ...
- 如何查看PostgreSQL的checkpoint 活动
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页 作者:高健@博客园 luckyjackgao@g ...
- 苏州优步uber司机奖励政策(持续更新)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- jQuery学习-尺寸坐标
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...