欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 重温react-07(函数注释和useEffect的使用方式)

重温react-07(函数注释和useEffect的使用方式)

2025/2/5 0:09:56 来源:https://blog.csdn.net/GAGGAAAAA/article/details/140015577  浏览:    关键词:重温react-07(函数注释和useEffect的使用方式)

函数注释的介绍和使用方式

    // 函数注释的方式 和 使用方法/*** @description 视图更新了 --> 打印视图* @function useEffect   --> 函数名* @param arr { Array } 数组 -->参数* @param number { Number } 数字 --> 参数* @author zhouxiaobao  2024/06/26 -->作者* @version 1.0.0 -->函数版本* @example useEffect(() => {  -->实例函数console.log('视图更新了')console.log(document.getElementById('div'));},[number])* */

useEffect的具体用法(详细)

import React, { useState, useEffect,useRef } from 'react'
// 函数组件 useEffect的第二个参数的用法
export default function LearnFunction01() {// 定义一个变量 , 定义一个初始化的设置值的方式 , 传入初始值const [number, setNumber] = useState(0)// 这个是引用数据类型需要前后的值进行比较才能改变视图const [arr, setArr] = useState([1, 2, 3, 4])const [content, setContent] = useState('');const contentEditableRef = useRef(null);const handleInput = (e) => {const htmlContent = contentEditableRef.current.innerHTML;const textContent = new DOMParser().parseFromString(htmlContent, 'text/html').body.textContent || '';setContent(textContent);console.log(content, '输入的值');};// 函数注释的方式 和 使用方法/*** @description 视图更新了 --> 打印视图* @function useEffect   --> 函数名* @param arr { Array } 数组 -->参数* @param number { Number } 数字 --> 参数* @author zhouxiaobao  2024/06/26 -->作者* @version 1.0.0 -->函数版本* @example useEffect(() => {  -->实例函数console.log('视图更新了')console.log(document.getElementById('div'));},[number])* */useEffect(() => {console.log('视图更新了')console.log(document.getElementById('div'));}, [])/** * useEffect(() => {console.log('视图更新了')console.log(document.getElementById('div'));},[])* * 第二个参数是 [],代表现在不更新任何的,类似于vue中的watch ,初始化为 []的话,可以相当于mounted 或者onMounted,只会执行一次* 如果在这个场景中第二个参数是arr的话,只有arr发生变化的时候才会触发useEffect,相当于vue中的watch* * */return (<div><div id="div">{number}</div><button onClick={() => {setNumber(number + 1)}}>+</button><hr /><button onClick={() => {setArr([...arr, arr.length + 1])}}>点击增加arr的长度</button><div>{arr.map((item, index) => {return <div key={index}>{item}</div>})}</div><hr /><divref={contentEditableRef}contentEditablestyle={{ width: '200px', height: '100px', background: '#ccc', color: 'red' }}dangerouslySetInnerHTML={{ __html: content }}onInput={handleInput} ></div></div>)
}

剖析

  1. 下面的代码是第一种方式,后面加一个空数组的话,就相当于vue2中的mounted,只会调用一次hook函数中的方法。
  2. 第二个参数是arr(或者是其他的变量),代表现在不更新任何的,类似于vue中的watch。
  3. 初始化为 [ ]的话,可以相当于mounted 或者onMounted,只会执行一次。
  4. 如果在这个场景中第二个参数是arr的话,只有arr发生变化的时候才会触发useEffect,相当于vue中的watch。
useEffect(() => {console.log('视图更新了')console.log(document.getElementById('div'));},[])
useEffect(() => {console.log('视图更新了')console.log(document.getElementById('div'));},[arr])

题外知识div中的contentEditable属性

<divref={contentEditableRef}contentEditablestyle={{ width: '200px', height: '100px', background: '#ccc', color: 'red' }}dangerouslySetInnerHTML={{ __html: content }}onInput={handleInput} >
</div>

加上这个属性之后,可以对div进行编辑,相当于是富文本。

const handleInput = (e) => {const htmlContent = contentEditableRef.current.innerHTML;const textContent = new DOMParser().parseFromString(htmlContent, 'text/html').body.textContent || '';setContent(textContent);console.log(content, '输入的值');
};

需要在当前这个页面引入useRef

import React, { useRef } from 'react'

感觉还挺好用的。当然图片的话,建议使用专业的第三方的富文本插件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com