本文共 3114 字,大约阅读时间需要 10 分钟。
目录
1.如何引入React
1.1 CDN引入(很麻烦,没人用)
操作
1.需要引入两个库,注意顺序 2.react、react-dom —react.development.js —react-dom.development.js 3.引入这两个库之后就可以使用自己的JS文件项目默认可以使用parcel来运行
// 对象console.log(window.React);// 函数console.log(window.React.createElement);// 对象console.log(window.ReactDOM);// 函数console.log(window.ReactDOM.render);
1.2 webpack引入React(了解)
yarn add react react-dom
2.import Read from 'react'
3.import ReactDOM from 'react-dom'
注意大小写 也很麻烦,需要配置webpackcreate-react-app
代替1.3 如何正确引入React
create-react-app
老手:webpack/rollup
自己配置yarn global add create-react-app
不用npx,在window上兼容性不好create-react-app my-appcd my-appyarn startstart . //打开当前文件夹
CDN引入的React都会变成全局变量
window.React使用React创建一个div
const App = window.React.createElement('div',{className:'red'},n)
1.创建一个div,class为red,里面内容为n 2.元素属性放到第二个参数,内容用 { } 括起来 3.所有div里面的东西都放到第三个参数中,内容可以用 [ ] 括起来 多个React.createElement
可以嵌套
//多个createElement嵌套使用//创建一个class为red的div,里面内容为n和一个添加了点击事件监听的buttonconst App = () => React.createElement("div", { className: "red" }, [ n, React.createElement( "button", { onClick: () => { n += 1; //这里调用App的返回值div,会重新读n的值 ReactDOM.render(App(), root); } }, "+1" ) ]);
2.1 App为什么是个函数
ReactDOM.render(App, root);
ReactDOM.render(App(), root);
中render的是App函数返回的div,执行App的时候会重新去读n的值,就能得到最新的n2.2 6个6
let ifor(i=0;i<6;i++){ setTimeout(()=>{ console.log(i)},1000)}
for(let i = 0 ; i<6 ; i++)
相当于:在函数作用域内声明一个中间变量 j 1.let j = i ; 打印出 j 2.当 i 不同时,函数作用域不同,则局部变量 j 为不同的值,就不会被之前的值替代,因此由6个 j,打印出来则不同 (全局变量只有一个,局部变量可以有多个) 3.JS根据这个思路创造了这个语法糖!function(j){}(i)
2.在前面加一个感叹号,就可以阻止报错 3.给函数传一个实际参数 i,那函数就会把i的值复制给形式参数 j 4.这里 j 和 i 只是复制值的关系,没什么其他关系,因此 j 也可以取名 ifor(var i=0;i<6;i++){ !function(j){ setTimeout(()=>{ console.log(j)},1000) }(i)}
2.3 函数与延迟执行
2.4 React元素和函数组件
App1 = React.createElement('div',null,n)
:App1是一个 React 元素 App2 = ()=> React.createElement('div',null,n)
:App2是一个 React 函数组件3.小结
转载地址:http://ikdhz.baihongyu.com/