react 封装组件的时候,改变数据setState无效

我写react的时候喜欢使用useState,组件内也使用(错误想法)。

外部使用useState改变数据,组件内不改变,你想去外部使用查看数据的值的时候发现数据没有改变(其实已经改变了。log看不到)

解决方案,结果就是。

组件内不要使用useState,直接将传过来的值使用就好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React是一种用于构建用户界面的JavaScript库,它将应用程序拆分成小而可重用的组件。而Hooks是React 16.8版本新增的特性,它可以让你在不编写 class 的情况下使用 state 以及其他 React 特性。 在React中,数据共享可以通过Context来实现。而封装Hooks组件可以通过自定义Hooks来实现。 下面是一个简单的例子,展示如何封装Hooks组件实现数据共享: ```javascript import React, { createContext, useContext, useState } from 'react'; // 创建一个Context对象 const CounterContext = createContext(); // 自定义Hook,提供计数器状态和操作函数 function useCounter() { const [count, setCount] = useState(0); const increment = () => { setCount(count + 1); }; const decrement = () => { setCount(count - 1); }; return [count, increment, decrement]; } // CounterProvider组件,提供计数器状态和操作函数 function CounterProvider(props) { const counter = useCounter(); return ( <CounterContext.Provider value={counter}> {props.children} </CounterContext.Provider> ); } // Counter组件,使用计数器状态和操作函数 function Counter() { const [count, increment, decrement] = useContext(CounterContext); return ( <div> <p>Count: {count}</p> <button onClick={increment}>Increment</button> <button onClick={decrement}>Decrement</button> </div> ); } // 在App组件中使用CounterProvider和Counter组件 function App() { return ( <CounterProvider> <Counter /> </CounterProvider> ); } export default App; ``` 上面的例子中,我们首先定义了一个自定义Hook useCounter,用于提供计数器状态和操作函数。然后,我们创建了一个CounterContext对象,并使用CounterProvider组件来提供计数器状态和操作函数。最后,我们使用useContext Hook在Counter组件中获取计数器状态和操作函数,并渲染出来。 相关问题: 1. React中的Context是什么? 2. Hooks是什么?有哪些常用的Hooks? 3. 自定义Hooks有什么好处? 4. 在React中如何实现数据共享?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值