我可以更新道具的状态吗
Can I update the state of a prop
我是 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)
的事情吗?如果不是这样,那么您将如何触发 App.js
中变量 tech
从 print.js
的状态更改?
你可以试试这个
- 通过 props
在 print.js 中传递文本和 setText
- 然后使用setText更新组件的状态
您不能也不应该尝试直接在子组件中更改道具的状态或值。要更改 props,您可以将函数作为 prop 传递,然后将新值发送给该函数。因此该函数会将您的道具更改为父组件,并将进一步传递给它的子组件。
<Print text = {text} changeText = {(newVal) => setText(newVal)}/>
然后在您的子组件中使用新值调用此 changeText
函数。
return (
<>
<p>{props.text}</p>
<div onClick={props.changeText('Hello')}>Change Text</div>
</>
);
仅供参考,{props}
是一个数组,您可以通过 {props.text}
访问文本
我是 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)
的事情吗?如果不是这样,那么您将如何触发 App.js
中变量 tech
从 print.js
的状态更改?
你可以试试这个
- 通过 props 在 print.js 中传递文本和 setText
- 然后使用setText更新组件的状态
您不能也不应该尝试直接在子组件中更改道具的状态或值。要更改 props,您可以将函数作为 prop 传递,然后将新值发送给该函数。因此该函数会将您的道具更改为父组件,并将进一步传递给它的子组件。
<Print text = {text} changeText = {(newVal) => setText(newVal)}/>
然后在您的子组件中使用新值调用此 changeText
函数。
return (
<>
<p>{props.text}</p>
<div onClick={props.changeText('Hello')}>Change Text</div>
</>
);
仅供参考,{props}
是一个数组,您可以通过 {props.text}