React基础

2020-04-10  本文已影响0人  吃肉肉不吃肉肉

React是用于构建用户界面的 JavaScript 库

特点

1.声明式设计 −React采用声明范式,可以轻松描述应用。
2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。
3.灵活 −React可以与已知的库或框架很好地配合。
4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。

React-搭建脚手架

安装 nodeJS
安装create-react-app

npm install -g create-react-app

启动项目

    cd myreact
    yarn start
    // npm run start

JSX语法

JSX 是一个看起来很像 html 的 JavaScript 语法扩展。

js和html混合

1. 只能有一个根节点

return (
  <div className="App">
    <h1>你好react</h1>
  </div>
);
// Classname="App" 就是根节点

)2. 可以执行javascript表达式 {}

{1+1}   
{i == 1 ? '对的!' : '错误的'}

)3. 类名class 变成 className

<div className="App">
 </div>

4. 行内样式 展开

var myStyle = {
  "font-size": "14px",
  "color": "#FF0000"
}
return (

  <div className="App">
    <h1 style={myStyle}>你好react</h1>
  </div>

);

5. 注释 {/* 注释 */}

6. 数组里面可以直接写html节点

var arr = [
  <h1>组件渲染</h1>,
  <h1>虚拟dom</h1>
]
return (
  <div className="App">
   {arr}
  </div>
);

条件渲染

{isLog?"欢迎回来":"请登录"}
//&&左右两边都为真,结果才为真  
{isLog&&"已登录"}

列表渲染

1.jsx 中的数组里面可以包含html Dom 结构,在jsx数组会自动展开

    let list = [react,vue,angular]
    list.map((item,index)=>{return(<div key="index">{item}</div>)})
    [<div key="0">react</div>,<div key="1">vue</div>,<div key="2">angular</div>,

表单绑定

<input value={this.state.msg}>
//双向
<input  value={this.state.msg} onChange={this.changeMsg.bind(this)}>

事件响应

 onClick={this.showMsg}
//特别注意方法不要()

        onClick={this.addNum.bind(this)}
        onClick = {()=>{this.addNum(  )}}

state使用
组件的数据(状态)
定义

constructor(props){
    super(props);
    this.state = {name:"yaya"}
}

使用

    {this.state.name}

修改

this.setState({"yaya":"hsy"})
//在更新state 也会同时更新dom

props使用

定义 父传子的数据
定义过程

子元素给父元素传递参数

核心思想 传入的props是一个函数

<child myfun ={this.changelt.bind(this)}>
//在child内部
<button onClick={this.props.myfun('数据')}>

数组相关方法

    map((item,index,self)=>{...}) //映射出一个新的数据组
    arr.indexOf(item)  ///查找数组所在的下标,找不到返回-1
    arr.splice(从多少,删除数量)
    arr.unshift()   //从前面添加内容
    arr.filter(item=>{...})   //过滤数组,如果回调函数返回true保留,false过滤

函数的bind方法

fun.bind(上下文this,参数执行参数A,参数B)

//执行fun 里面的this用第一个参数带代替,后面的参数A,B 为函数的参数

上一篇下一篇

猜你喜欢

热点阅读