安装create-react-apphtml
打开终端执行:npm i create-react-app -g
create-react-app AwesomeProject
执行yarn start
react
Debugger for Chrome
写配置文件(launch.json)webpack
eg:web
{ "type": "chrome", "request": "launch", "name": "Chrome", "url": "http://localhost:3000", "webRoot": "${workspaceRoot}/src", "userDataDir": "${workspaceRoot}/.vscode/chrome", "sourceMapPathOverrides": { "webpack:///src/*": "${webRoot}/*" } }
在调试窗口点击,开始调试.(须要先在终端执行yarn start
)chrome
导入其余组件/对象/方法import
与暴露组件/对象/方法export
npm
常见用法:json
从MyText.js
中暴露一个组件
```js
import React, { Component } from 'react'babel
export default class MyText extends Component {app
}MyText.js
同级目录下的一个文件中导入该组件js //说明: //路径: './'表示同级目录下的文件 //省略后缀: 后缀为.js的能够省略不写 import MyText from './MyText'
从util.js
工具方法中暴露一个对象
```js
//形式1
export function func1() {dom
}
export function func2() {
}
//形式2 效果等同于 形式1
function func1() {
}
function func2() {
}
export default {从util.js
中导入对象或指定方法
```js
//导入整个对象
import util from './../util'
util.func1();
util.func2();
//导入指定方法
import {func1} from './../util'
箭头函数(参数) => {函数体}
this
arguments
Promise
主要用于美化异步操做代码, 使其可以有同步代码的阅读体验, 避免出现地狱回调.
有三种状态:
1. padding, 等待结果 2. reject, 拒绝/错误 3. resolve, 成功
eg:
```js
let func1 = () => {
let p = new Promise((resolve, reject) => {
setTimeout(() => {
if (true) {
resolve('success');
} else {
reject();
}
}, 500);
});
return p;
};
let func2 = () => {
let p = new Promise((resolve, reject) => {
setTimeout(() => {
if (false) {
resolve();
} else {
reject('error');
}
}, 500);
});
return p;
};
func
.then((data) => {
//500ms后执行 console.log(data); return func2();
})
.then(() => {
//未执行 console.log('1');
}, (errorData) => {
console.log(errorData);
})
.catch((errMsg) => {
//统一处理error console.error(errMsg);
});
```内部使用插值表达式, (关于表达式和语句的区别)
eg:
function greeting(text) { return <h1>{ text }</h1> } //单括号内部使用js表达式,例如: /* { number + 1 } { ok ? 'YES' : 'NO' } { message.split('').reverse().join('') } */
特殊的属性写法
eg:
class => className
const el1 = ( <div className="yourName"> <h1>hello</h1> <b>world</b> </div> );
src="example.jpg" => src={yourPath}
, typeof yourPath is Stringconst yourPath = 'example.jpg'; const el2 = { <img src={yourPath} /> }; //or const el3 = { <img src="example.jpg" /> //传统html中属性的写法 }; //error const el4 = { <img src="yourPath" /> //路径为yourPath, 而不是example.jpg };
注意
在JavaScript语句中直接套用html标签或者自定义组件等同于使用React.createElement()
方法, 固然这须要使用babel对其进行编译.
React element是一个简单的对象(原文: a plain Object), 由React.createElement()
方法获得, 而且全部的React element构成React DOM.
js const element = React.createElement( 'h1', {className: 'greeting'}, 'Hello, world!' );
使用ReactDOM.render()
方法能够在DOM
中注入React DOM
.
纯React的项目通常来讲只须要一个root DOM.而在一个已有的项目中, 你能够提供多个dom节点, 做为注入React DOM的入口.
create-react-app
默认支持的方法有:
"..."对象展开符
eg:
let obj1 = { name: 'zgatry', address: '杭州', age: 18 }; let obj2 = { ...obj1, age: 23 }; console.log(obj2); /* { name: 'zgatry', address: '杭州', age: 23 } */
Object.assign()方法