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场景:当组件为页面组件的一部分即 ...
随机推荐
- R中执行if else报错:unexpected 'else' in "else"
注意if else的结构写法,有以下三种,除此之外,会不识别else. 结构 1 : if() xx else yy # 一行:结构 2: if() {xx} else {y ...
- 980. Unique Paths III
题目来源: https://leetcode.com/problems/unique-paths-iii/ 自我感觉难度/真实难度: 题意: 分析: 回溯法,直接DFS就可以了 自己的代码: clas ...
- 《关于ES6的学习》
var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方声明的,都会提升到当前作用域的最顶部,这种行为叫做变量提升(Hoisting) 也就是说,如 ...
- NYOJ 18 The Triangle 填表法,普通dp
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=18 The Triangle 时间限制:1000 ms | 内存限制:6553 ...
- 【vue知识点】1)vue生命周期
[vue知识点]2)vue登录认证
- vue实现分页
效果图: html页面: data数据: 方法: 计算属性: 样式: html代码: <!--分页--> <div class="page-bar"> &l ...
- SAP函数PREPARE_STRING:提取字符串中的数字
今天调整一个同事的需求时,要计算一个含税金额.报表内已经取到税率,但存在的形式是字符串格式:16%. 正好SAP内有一个标准函数:PREPARE_STRING 可以处理字符串,将特别标志替换为有效标志 ...
- matlab2016b配置libsvm的各中坑及解决办法
Q1:matlab2016b不能自动关联m文件! A1: (1)首先准备好工具,工具链接:pan.baidu.com/s/1t_KaFZNOFln9m57sMBTrkQ:提取码:x49w. (2)下载 ...
- MYSQL注入天书之盲注讲解
Background-2 盲注的讲解 何为盲注?盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面.此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注.从ba ...
- 手把手教你开发chrome扩展
转载:http://www.cnblogs.com/walkingp/archive/2011/04/04/2003875.html 手把手教你开发chrome扩展一:开发Chrome Extenst ...