钩子函数useState动态刷新列表

文章讲述了如何在React应用中使用useState和useEffecthooks来管理列表数据,通过onSearch事件处理用户输入并在搜索后动态添加和渲染数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现原理:主要利用setLists([...lists,params])更新钩子函数的值

export default () =>{
  const [lists,setLists] = useState([])
  // 使用 useEffect 在页面加载时获取数据
  useEffect(() => {
    // 定义一个内部函数用于获取数据
    const fetchData = async () => {
      try {
        const res = await get_keyword({}); // 调用从API获取数据的函数
        setLists(res.data); // 将数据设置到state中
      } catch (error) {
        console.error('Error fetching data:', error);
      }
    };
    // 调用数据获取函数
    fetchData();
  }, []); // 注意依赖项数组为空,表示只在组件挂载时执行


  const onSearch: SearchProps['onSearch'] = async (value, _e, info) => {
    console.log(info?.source, value)
    // const params = {cars_name:value}
    // const res = await cars_rk(params)
    const params = {keyword_name:value}
    await add_keyword(params)
    setLists([...lists,params])
  };

  return (

    <div>
      <Search placeholder="input search text" onSearch={onSearch} style={{ width: 200 }} />
      <div style={{display:"flex",overflowX: 'auto',width:"100%"}}>
        {lists && lists.map((item,index)=>{
          console.log("item",item)
          return(
            <ProList
              style={{flex:"0 0 auto",overflowX:"auto",width:"350px",height:"900px"}}
              headerTitle={item.keyword_name}
              metas={{
                title:{
                  dataIndex:"commenter_name"
                },
                avatar:{
                  dataIndex:"avatar_url"
                },
                description:{
                  dataIndex:"content"
                }
              }}
              request={async ()=>{
                const params = {keyword_name:item.keyword_name}
                const res = await get_cars(params)
                return {
                  success:true,
                  data:res.data
                }
              }}
            />
          )
        })}
      </div>
    </div>
  )
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值