在开发中不能直接通过修改state的值来使界面发生变化,必须通过setState来修改才能使页面发生变化。
 使用setState修改时,两次的修改结果会合并,在合并时会比较参数的变化,如果发生变化会覆盖原来的,然后再执行render
1.setState可以接受一个函数,可以获取之前的state和props
// this.setState((state,props)=>{   return data })  //如果希望在数据更新后获取对应的结果可以传入一个回调函数 this.setState({data:"aa"},()=>{       console.log("更新后的data:",this.state.data) })  
使用ref获取 dom
class App extends Component {   constructor() {     super();     this.state = {};     this.myRef = createRef();   }    cli() {     console.log(this.myRef);   }   render() {     return (                   this.myRef}>aaa                         );   } }  使用ref获取组件实例
class App extends Component {   constructor() {     super();     this.state = {};     this.myRef = createRef();   }    cli() {     console.log(this.myRef.current); //可以使用组件内的方法 this.myRef.current.xxx()   }   render() {     return (                    this.myRef}>                          );   } }  
ref转发
 ref不能用于函数式组件,需要使用forwardRef进行转发
 export const Son = forwardRef(function (props, ref) {   return (            ref}>ss
                {(value) => {           return {value.name}
;         }}                ); });   change(e){      this.setState({      username:e.target.value   }) } username} onChange={(e)=>this.change(e)}>  高阶函数 返回类组件
import { PureComponent } from "react"; function time(Com) {   return class Time extends PureComponent {     constructor() {       super();     }     render() {       const { time } = this.props;       return (                    {Com.name}es6的语法           time}>                 );     }   }; } export default time;  在导出时作为参数传入
import { Component, forwardRef } from "react"; import time from "./time"; class Son extends Component {   render() {     const { name } = this.context;     return (                {name}                   );   } } export default time(Son);   高阶函数 返回函数式组件
export function tests(ELe) {   return forwardRef(function (props, ref) {     return (       <>         props.data} time={"2023"}>        >     );   }); }  import { Component, forwardRef } from "react"; import {tests}from "./time"; class Son extends Component {   render() {     const { name } = this.context;     return (                {name}                   );   } } export default time(Son);  this.forceUpdate()强制更新
将子节点挂载到其他地方
index.html中:                ---------------------------------- import React from "react"; import { createPortal } from "react-dom"; class App extends React.Component {   render() {     return (                           123
           {createPortal(456
, document.querySelector("#portal"))}                     );   } } export default App;  import React, { Fragment } from "react";  return (                xxxx             );    语法糖    return (       <>         xxxx       >     );  如果需要在Fragment添加key时不能省略

 严格模式会检查:
npm install react-transition-group --save 

 in 为true时,触发进入状态
 in为false时,触发退出状态
 例子:
isShow} classNams='why'>      
.why-enter{  } .why-enter-active{  } .why-exit{  } .why-exit-active{  }  其他属性
 例子:



 例子:


 安装 styled-components:npm i styled-components
定义 styled-components
import styled from "styled-components";  export const AppWrapper = styled.div`   .select {     color: red;     .title {       border: 1px solid black;       font-size: 20px;     }     &:hover {       background-color: cyan;     }   }    .content {     background-color: blue;   } `;  在组件中使用
import React, { Fragment } from "react"; import { AppWrapper } from "./style"; class App extends React.Component {   render() {     return (       <>                                 xxxx             span                      00000000000                 >     );   } } export default App;  在组件中定义变量
import React, { Fragment } from "react"; import { AppWrapper, SelectWrapper } from "./style"; import Fun from "./fun"; class App extends React.Component {   render() {     const size = "30";     return (       <>                                 xxxx             span                      00000000000           "yellow"} size={"30"}>             sssssss                               "111"}>        >     );   } } export default App;   使用组件传递的变量
//定义的变量也可以 const myColor='red' export const SelectWrapper = styled.div`   .s {     color: ${(props) => props.color};     font-size: ${(props) => props.size}px;   }   .a {     color:${myColor}   } `;  样式继承
 设置主题
 设置的主题样式可以通过props.theme.来获取
可以借助classnames来动态添加classnpm i classnames
                    上一篇:C语言:字符函数和字符串函数
                
下一篇:利用AI辅助制作ppt封面