react总结杂烩
1、nodemon nodemon是一种工具,通过在检测到目录中的文件更改时自动重新启动节点应用程序来帮助开发基于node.js的应用程序。 nodemon并没有要求任何对你的代码或开发的方法中的额外变化。nodemon是一个替换包装器 安装 npm install -g nodemon ? 2、es6以上 对象展开 //es6不支持,babel支持 const a={a:1,b:2} const b={p:21} const c={...a,..b} 展开运算符允许一个表达式在某处展开。展开运算符在多个参数(用于函数调用)或多个元素(用于数组字面量)或者多个变量(用于解构赋值)的地方可以使用。可遍历对象(iterables)可用. Array,Set,String内置[Symbol.iterator]方法 ? const arr=[1,2,3,4] const arr2=[...arr,51,52] == [1,4,52] 解构赋值中展开运算符只能用在最后 let [arg1,arg2,...arg3] = [1,4]; arg1 //1 arg2 //2 arg3 //[‘3‘,‘4‘] 解构赋值 let arr=["xx","hello"] let [p1,p2] = arr Object实用方法 Object.keys() Object.values() Object.entries() let obj={a:1,b:2,c:3} Object.keys(obj) //a,b,c Object.values(obj) //1,3 Object.entries(obj) //[[a,1],[b,2],[c,3]] 简写对象属性 name=1
let obj = {name}
简写对象方法 let obj = {fn(){console.log(11)}}
obj.fn()
添加对象属性 let attr1 = ‘name‘,attr2 = ‘age‘,attr3 = ‘sex‘; let person = { [attr1]: ‘payen‘,[attr2]: 19,[attr3]: ‘male‘ } class类 class MyApp{ constructor(){ this.name = "zhang"; } print(){ console.log(this.name) } } let test = new MyApp(); test.print() Set 集合元素不可重复 数组出重 Set(arr) ? 3、react的render 如果就一个render函数直接函数表示 如 class MyApp extend React.Component{ constructor(){ this.name = "zhang"; } render(){ return ( <div> <show a="我"></show> </div> ) } } function show(props){ return <h2>{props.a}家哟</h2>; } export default MyApp; 5、react杂one state 不可变对象 只能使用this,setState() 修改 jsx其实就是js可以直接使用数组循环渲染列表 6、事件 this解决方式 ()=>this.eventFn() this.eventFn.bind(this) 7、antd-mobile 蚂蚁金服的UI框架 配置: 安装babel-plugin-import 可在package.json里的babel对象直接配置 "babel": { "presets": [ "react-app" ],"plugins": [ ["import",{"libraryName":"antd-mobile","style":"css"}] ] } 8、redux之connect react-redux 提供了两个重要的对象,? connect([mapStateToProps],[mapDispatchToProps],[mergeProps],[options])
这个函数允许我们将? @connect装饰器的写法 import React from ‘react‘ import {render} from ‘react-dom‘ import {connect} from ‘react-redux‘ import {bindActionCreators} from ‘redux‘ import action from ‘action.js‘ @connect( state=>state.main,dispatch=>bindActionCreators(action,dispatch) ) class App extends React.Component{ render(){ return <div>hello</div> } } 等价于 import React from ‘react‘ import {render} from ‘react-dom‘ import {connect} from ‘react-redux‘ import {bindActionCreators} from ‘redux‘ import action from ‘action.js‘ class App extends React.Component{ render(){ return <div>hello</div> } } function mapStateToProps(state){ return state.main } function mapDispatchToProps(dispatch){ return bindActionCreators(action,dispatch) } export default connect(mapStateToProps,mapDispatchToProps)(App) 用了装饰器,需要安装模块babel-plugin-transform-decorators-legacy,然后在babel中配置 { "plugins":[ "transform-decorators-legacy" ] } 9、路由 动态路由、Route、Link、Switch 路由时this.props.match获取对应信息 10、axios 拦截器 axios.interceptors.request.use(config=>{...;return config;}) axios.interceptors.response.use(config=>{...;return config;}) 11、装饰器 es7提出了decorator的语法,让我们能写出更优雅更好维护的代码,装饰器的本质是对现有的功能进行包装, function log(className,propName,descriptor) { console.log(className) console.log(propName) console.log(descriptor) var value = descriptor.value descriptor.value = function() { console.log(arguments) value() } } function logClass(classNmae){ classNmae.flag = true return classNmae } @logClass class Curd{ constructor(){ this.vvv = 1; } @log update() { } } console.log((new Curd()).update(33)) 12、redux reducer type命名不要冲突,容易出问题,最好另起一个文件把它放在一起 action一般都是直接返回一个对象,如{type,data},但是使用了redux-thunk,可以先执行函数,再返回一个函数,把dispatch,getState dispatch是异步更新时使用的 使用了redux-thunk可以异步、同步一起使用,就是可以直接返回对象,也可以是函数,函数接受dispatch,实现更新操作 13、Provider组件 Provider功能主要为以下两点: 14、import? 也可以同时将default语法与上述用法(命名空间导入或命名导入)一起使用。在这种情况下,default导入必须首先声明。 例如: 15、MongoDB MongoDB使用find来进行查询 第一个参数决定了要返回那些文档 第二个参数我们并不希望将文档中的所有键/值对都返回或我们希望返回的信息 db.user.find({},{"name":1,"_id":0}) 只想得到name,连 _id 都不想要 schema可以理解为mongoose对表结构的定义 schema不具备操作数据库的能力 Model的每一个实例(instance)就是一个document。document可以保存到数据库和对数据库进行操作。 Model一个参数时时取集合 两个参数时定义集合并返回集合 由Model创建的实体,使用save方法保存数据 var model = new User({....}) model.save((err,doc)=>{...}) body-parser是非常常用的一个express中间件,作用是对post请求的请求体进行解析。 16、withRouter withRouter可以包装任何自定义组件,将react-router 的 history,location,match 三个对象传入。 ? express: app.use加载插件也有顺序,所有错误顺序可能会让插件的功能无法使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |