浅析react

2021-02-03  本文已影响0人  咔咔祺

安装react(脚手架安装)

npm(cnpm、) install creat-react-app -g

创建新项目(使用脚手架创建一个新的单页应用,cd进项目里后用start跑起)

create-react-app my-app

cd my-app

npm start

react组件(组件总览)

引入Component组件(如何在页面组件中引入普通组件)

JSX语法(就是在js里套dom,dom里面套js)

渲染虚拟DOM

组件props

组件state

组件嵌套

组件生命周期

*引入Component组件

1、在头部引入Component组件,然后通过class方式继承Component,最后将组件导出,即可成为单独组件使用(跟java有点像接收类的mian方法,组件首字母需大写)

代码部分:

//引入Component                                                                                                                                    

import {Component} from 'react';                                                                                                                                    

//首字母均大写                                                                                                                                    

class MyComponent extends Component{                                                                                                                                    

consturtion(props){                                                                                                                                    

super(props);                                                                                                                                    

this.state={                                                                                                                                                                                                      

isShow:true                                      //isShow是否改变了状态                                                                                    

}                                                                                                                                    

}                                                                                                                                    

//react生命周期钩子函数                                                                                                                                    

componentWillMount() {}                  //挂载前(16.3以后弃用了)                                                                             

componentDidMount() {}                  //组件挂载完执行                                                                                               

componentWillReceiveProps() {}     //组件更新数据时执行,props、state                            

shouldComponentUpdate() {}          //组件需要更新执行                                                                                           

componentWillUpdate() {}               //组件更新前                                                                                                     

componentDidUpdate() {}               //组件更新后                                                                                                        

componentWillUnmount() {}           //组件销毁前执行                                                                                                 

//通过render函数可以将JSX语法渲染成真实dom                                                                                 

render() {                                                                                                                                    

render (                                                                                     

   <div>                                                                                                                                    

<h1>我是组件</h1>                                                                  

<p>{this.props.test}</p>     //这里拿到值                                                                                                                    

<button onClick={()=>{                                                                                                                                    

this.setState({ //点击后可修改state的值                                                                                                                                   

 isShow:!this.state.isShow,         //将会通过isShow改变状态                                                                                     

})                                                                                                                                    

}}>点我</button>                                                                  

<p>{this.state.isShow}</p>                                                                  

</div>                                                                                                                                    

)                                                                                                                                    

}                                                                                                                                    

}                                                                                                                                                                                  

//首字母大写                                                                                      

class Parent extends Component{                                                                  

return <MyComponent test="我是props"/>            //嵌套了MyComponent通过父组件传进去                                    

}                                                                                                                                    

export default Parent;                                                                                                                                    

*JSX语法

确实说白了就是html标签写到js中去,然后通过babel转译成react虚拟dom对象,然后再渲染,在标签内也可以嵌套js语句。想嵌套js语句的时候要用{}包裹起来。

*渲染虚拟dom

[if !supportLists]1、[endif]当修改值需要react重新渲染时,只会做修改处的局部渲染,diff算法(设计理念相当于异步);

[if !supportLists]2、[endif]React先把JSX语法转成react对象,然后通过内部创建节点插入dom中;

*组件props

基础数据类型、引用数据类型。。。

子组件通过this.props这个对象来获取父组件传下的值+

*组件state

状态state(存放的是一些会改变的变量)

判断组件变化获取表单值等;修改state会引起recat重新渲染,也就是更新状态会引起组件刷新。

setState()这个异步函数来设置state的值。

*组件的嵌套

组件复用

*组件的生命周期钩子函数

ESLint格式校验bug影响gitlab提交

函数组件与calss组件

import { Form, Input, Button, Checkbox } from 'antd'; 

const layout = { labelCol: { span: 8 }, wrapperCol: { span: 16 }, }; 

const tailLayout = { wrapperCol: { offset: 8, span: 16 }, }; 

const Demo = () => { 

const onFinish = values => { console.log('Success:', values); }; 

const onFinishFailed = errorInfo => { console.log('Failed:', errorInfo); }; 

return ( 

<Form

{...layout} 

name="basic" initialValues={{ remember: true }} 

onFinish={onFinish} 

onFinishFailed={onFinishFailed} > 

<Form.Item

label="Username" 

name="username" 

rules={[{ 

required: true, 

message: 'Please input your username!' }]} 

<Input /> 

</Form.Item>

<Form.Item

label="Password" 

name="password" 

rules={[{ required: true, message: 'Please input your password!' }]} 

>

 <Input.Password /> 

</Form.Item> 

<Form.Item {...tailLayout} name="remember" valuePropName="checked"> <Checkbox>Remember me</Checkbox> 

</Form.Item>

 <Form.Item {...tailLayout}> <Button type="primary" htmlType="submit"> 

Submit

</Button> 

</Form.Item> 

</Form>

 ); 

}; 

ReactDOM.render(<Demo />, mountNode);

后端接口=>services中通过import中的get对接接口=>model空间里创建一个namespace的table数据空间,在state里初始化model状态,

Effects处理异步的业务逻辑,通过*x封装call查询接口并将结果通过put存入state并更新。

在reducer里,计算出新的state并更新,

走到页面这里@connect这个高阶组件通过store封装了所有可用的model,通过return一个对象,包含了需要使用的属性,将以上model里面的内容注入到组件的props上,在render哪里通过解构赋值的形式将props中的属性赋值给tast,再通过.获取值。

注册一个updateDtat接口

在页面组件中调用接口方法

在页面组件中引用样式

enterButton是否有确认按钮,可设为按钮文字。该属性会与 addonAfter 冲突。

allowClear可以点击清除图标删除内容

onChange输入框内容变化时的回调

onSelect点击搜索图标、清除图标,或按下回车键时的回调

value输入框内容

size Input.Group 中所有的 Input 的大小,可选 large default small

在页面组件中的connect注解中注入“table”的model空间

上一篇 下一篇

猜你喜欢

热点阅读