【问题标题】:Can I update the state of a prop我可以更新道具的状态吗
【发布时间】:2021-12-29 14:04:15
【问题描述】:

我是 React 新手。我们可以改变道具的状态吗?例如,我有 2 段代码

App.js

import React, { useState } from 'react' 
import Print from '../components/Print/print'

const [text, setText] = useState("Hi");

<Print text = {text} />

print.js

import React, { useState } from 'react'

const Print = (props) => {
    return(
            <p>props</p>
   )

export default Print

有没有办法改变道具的状态,即在print.js 中使用useState() 来更新状态。例如,我们可以在print.js 中做类似setText(prop) 的事情。如果不是这样,那么您将如何触发从 print.jsApp.js 中的变量 tech 的状态更改?

【问题讨论】:

  • 把二传手传下去?传递不同的回调来代理访问它?
  • 在 Print 中挂载时,创建一个 state var,将值设置为 prop 值。然后,您可以在不更改道具的情况下更改 print 本身的值。

标签: javascript reactjs react-redux react-hooks


【解决方案1】:

您不能也不应该尝试直接在子组件中更改道具的状态或值。要更改道具,您可以将函数作为道具传递,然后将新值发送给该函数。因此,该函数会将您的 props 更改为父组件,并将进一步传递给其子组件。

<Print text = {text} changeText = {(newVal) => setText(newVal)}/>

然后在您的子组件中使用新值调用此 changeText 函数。

 return (
   <>
    <p>{props.text}</p>
    <div onClick={props.changeText('Hello')}>Change Text</div>
   </>
 );

仅供参考,{props} 是一个数组,您可以通过 {props.text} 访问文本

【讨论】:

  • 谢谢..你提到的方法有效
  • 欢迎。保持学习。一切顺利。
【解决方案2】:

你可以试试这个

  • 在print.js中通过props传递text和setText
  • 然后使用 setText 更新组件的状态

【讨论】:

    猜你喜欢
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2020-06-19
    相关资源
    最近更新 更多