React

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > React > react使用定义数据并监听其值

react中如何使用定义数据并监听其值

作者:小何同学要加油

这篇文章主要介绍了react中如何使用定义数据并监听其值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

react使用定义数据并监听其值

原因

定义了数据,搜索之后可以打印出来数据,但是会延迟得到搜索后的数据。

import * as React from 'react';
 export default function MobileList(props) {
 const [procDefId, setprocDefId] = useState('')//定义任务类别
  
     // 搜索任务类型时触发
    const changeRadio = (value) => {
        console.log(value)//这样可以得到搜索的值
        setprocDefId(value)//搜索后的内容,存入procDefId
    }
     const getMoblieList = () => {
      const obj={
          procDefId //但是会延迟,得到搜索的值
         }
         getTask(obj).then((res) => {//obj,得不到的值
        
          })
      }
        
}

解决

对定义的数据进行useEffect监听,或者还有一个办法是加入定时器setTimeOut进行延迟

import * as React from 'react';
import {  useEffect } from 'react';
 export default function MobileList(props) {
 const [procDefId, setprocDefId] = useState('')//定义任务类别
  useEffect(() => {
        getMoblieList()
    }, [procDefId])//只有监听procDefId变化时,才调用 getMoblieList函数
     // 搜索任务类型时触发
    const changeRadio = (value) => {
        setprocDefId(value)//搜索后的内容,存入procDefId
    }
     const getMoblieList = () => {
      const obj={
          procDefId //得到搜索的值
         }
         getTask(obj).then((res) => {//得到的值传入接口
          //对接口进行处理
          })
      }
        
}

react数据监听方式

监听组件传递的值:

 componentWillReceiveProps(newProps)
 {
     参数为给组件传递的参数
 } 

监听组件内部状态的变化:

componentDidUpdate(prevProps,prevState){
    参数分别为改变之前的数据状态对象
    if(prevState.属性名!=this.state.属性名)
    {
        ...
    }
}

代码示例:

    //组件接收新属性时调用
    componentWillReceiveProps(newProps)
    {
        const {searchName}=this.props;
        this.setState({
            loading:true
        })
 
        setTimeout(()=>{
            this.setState({
                loading:false,
                users:[{url:'https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1906469856,4113625838&fm=26&gp=0.jpg','name':'jeff'},{url:'https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1906469856,4113625838&fm=26&gp=0.jpg',name:'jeff2'}]
            })
        },2000)
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文