我react开发中总结的小技巧
发布时间:2020-12-15 06:44:44 所属栏目:百科 来源:网络整理
导读:1. 组件命名文件夹 一个组件一个文件夹,可读性高,结构清晰 文件夹:Danamic(首字母大写)index.jsxstyle.lessdata.js 引用 : import Danamic from './Danamic' 能自动识别文件夹内index文件 2. 无状态组件() import React from 'react'import { render } f
1. 组件命名文件夹一个组件一个文件夹,可读性高,结构清晰 文件夹:Danamic(首字母大写) index.jsx style.less data.js 引用 : import Danamic from './Danamic' 能自动识别文件夹内index文件 2. 无状态组件()import React from 'react' import { render } from 'react-dom' function isEmpty(obj) { return obj === null || obj === undefined } export default ({ type,clickFn }) => { let text = '' switch ((isEmpty(type) ? '' : type).toString()) { case "2": text = '没有更多了' break case "1": text = '点击加载更多' break case "0": text = '网络加载问题,请稍后重试' break } return <div className="warning" onClick={clickFn}>{text}</div> } 少写下面这些代码 export default class extends React.Component { constructor(props) { super(props) } } 3. static react.propTypesconstructor(props) { super(props) } static propTypes = { info: React.PropTypes.object.isRequired,loginSuccess: React.PropTypes.func.isRequired,} function a() { } a.x a.prototype.y 加上propTypes 能一眼看出父组件传的参数以及类型 4. 提取数据请求data.js import React from 'react' import ajax from 'ajax-promise-simple' import loadPage from '@/common/loadPage' module.exports = { //获取全部评论 async getList(params) { let result = await ajax.getJSON('/amsquare/detailcomment',params) return { succsess: result.code === 0,data: result.data ? result.data : [] } },//点赞 async zanClick(params) { let result = await ajax.getJSON(`/amsquare/addcmtpraise`,params) // console.log(params) return { succsess: result.code === 0 } },//删除动态 async removeDT(params) { let result = await ajax.getJSON('/amsquare/deldymanic',params) if (result.code === 0) { const url = `http://wen.58.com/amsquare/main?from=weijiaoliu_nav`; const browser = window.____json4fe.browser; loadPage(url,browser,false) } },} 应用: import { getList } from '../data' getListData = async () => { this.setState({ loading: true }) let { succsess,data } = await getList(this.infoConf) this.setState({ loading: false }) if (succsess) { this.setState((preState,props) => ({ hasMore: data.length < this.infoConf.pageSize ? false : true,resultStatus: data.length < this.infoConf.pageSize ? 2 : 1,list: [...preState.list,...data],})) this.infoConf.pageindex++; } else { this.setState({ resultStatus: 0 }) } } 5. 将多个组件放在一个index对外导出import a import b import c module.exports={ a,b,c,d } 6. 提取封装 共用组件例如:
引用: import { scrollBottom,debounce } from '@/common/scrollData' 使用 @ 相当于src目录 (自动构建配置) 少用 ../ ./ 7. 用let替换var8. 代码加注释9. webpack.config.jsresolve: { ... extensions: ['.ts','.tsx','.js','.json','.styl','.less'],... }, require的时候可以直接使用require('file'),不用require('file.js') 10.webpack 端口号随机port: Math.floor(Math.random() * 1001) + 7000, 最近写文档比较多,所以把MarkDown整理了一遍,有需要可以参考: 我的MarkDown学习之旅 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |