useState更新复杂数据(无状态组件)

useState数组(简单)

//定义数据
const [data,setData]=useState([1,2,3])
//点击在data数据添加一个4
 const clickAdd()=>{
     setData(
         ()=>{
             data.push(4);
             return [...data]
         }
     )
 }
 //点击按钮
 <button onClick={()=>clickAdd()}>

useState数组(复杂/数组套对象)

const [data,setData]=useState([{id:'题目id01',isMandatory:true,uname:'大题目的内容11111',selectType:'题目类型',sort:'排序01',answerListDTO:[{answer:'答案名称',id:'id',sort:'答案排序00'},{answer:'答案名称2',id:'id2',sort:'答案排序01'}]}])
//添加
    const addInput=(i,c)=>{
        setData(
            ()=>{
                data[i].answerListDTO.splice(c+1,0,{answer:'',id:"",sort:`答案`});
                return [...data]
            }            
        )
    }
    //移除
        const removeInput=(i,c)=>{
        setData(
            ()=>{
                data[i].answerListDTO.splice(c,1);
                return [...data]
            }
        )
    }

useState对象(简单)

const [data,setData]=useState({uname:'zhangsan'})
const setData=()=>{
    setData({
        ...data,
        uname:'丽丽'
    })
}

useState对象(复杂/对象数组)

const [data,setData]=useState({id:'问卷id',bname:'问卷名称',questionnairePhoto:'问卷图片',
        questionnaireTopicDTOList:[
            {id:'题目id01',isMandatory:true,uname:'大题目的内容11111',selectType:1,sort:'排序01',answerListDTO:[{answer:'答案名称',id:'id',sort:'答案排序00'},{answer:'答案名称2',id:'id2',sort:'答案排序01'}]}
        ]
    })
    //点击添加
    const addInput=(i,c)=>{
        let list=[...data.questionnaireTopicDTOList]
        list[i].answerListDTO.splice(c+1,0,{answer:'',id:"",sort:`答案排序000000${c}`})
        setData({
            ...data,
            questionnaireTopicDTOList:list
        })
    }
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 React 中,子组件无法直接更改父组件数据。这是因为 React 的数据流是单向的,只能从父组件向子组件传递数据。如果子组件需要更改父组件数据,可以通过以下几种方式实现: 1. 通过回调函数:在父组件中定义一个函数,将其作为 props 传递给子组件。子组件内部可以调用该回调函数,并将需要更改的数据作为参数传递给父组件,从而实现更改父组件数据的目的。 ```jsx // 父组件 function ParentComponent() { const [data, setData] = useState(''); // 回调函数 const updateData = (newData) => { setData(newData); } return ( <div> <ChildComponent updateData={updateData} /> <p>{data}</p> </div> ); } // 子组件 function ChildComponent({ updateData }) { const handleClick = () => { updateData('New Data'); } return ( <button onClick={handleClick}>Update Parent Data</button> ); } ``` 2. 使用状态管理库:如果应用程序比较复杂,可以考虑使用像 Redux、MobX 或 Zustand 这样的状态管理库来管理应用程序的状态。这些库提供了全局状态,可以在任何组件中访问和更改该状态。 3. 使用上下文(Context) API:React 提供了上下文 API,允许在组件树中共享数据。你可以将需要更改的数据存储在上下文中,在子组件中通过上下文访问并更改它。这种方式适用于需要在多个层级的组件中共享数据的情况。 以上是几种常见的方式,你可以根据具体需求选择合适的方法来实现子组件更改父组件数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值