gpt4 book ai didi

reactjs - 如何从 ReactJs 中的另一个组件调用 setState

转载 作者:行者123 更新时间:2023-12-03 13:42:41 26 4
gpt4 key购买 nike

我有两个 React 组件,我想调用 setState 在一个组件中设置状态,但在另一个组件中调用。我该怎么做?

最佳答案

如果您使用功能组件,则可以使用像 useState 这样的钩子(Hook)。不要忘记使用 useCallback“保存”(内存)处理程序的引用,它有助于 React 避免无用的重新渲染。

功能组件解决方案

// myContainer.js
import React, { useState } from 'react'
import MyChild from 'some/path/myChild'

function MyContainer() {
const [name, setName] = useState('foo')

return (
<MyChild name={name} onNameChange={setName} />
)
}

export default MyContainer

// myChild.js
import React, { useCallback } from 'react'

function MyChild({ name, onNameChange }) {

const handleInputChange = useCallback(event => {
onNameChange(event.target.value)
}, [onNameChange])

return (
<div>
<input type="text" onChange={handleInputChange} value={name} />
<div>The name is: {name}</div>
</div>
)
}

export default MyChild

在类中,您可以使用包含一些逻辑或函数调用的处理程序(方法)。它有助于保持代码的可维护性。

类组件解决方案

// myContainer.js
import React, { Component } from 'react'
import MyChild from 'some/path/myChild'

class MyContainer extends Component {
state = {
name: 'foo'
}

handleNameChange = name => {
this.setState({ name })
}

render() {
return (
<MyChild name={this.state.name} onNameChange={this.handleNameChange} />
)
}

}

export default MyContainer

// myChild.js
import React, { Component } from 'react'

class MyChild extends Component {

handleInputChange = event => {
this.props.onNameChange(event.target.value)
}

render() {
return (
<div>
<input type="text" onChange={this.handleInputChange} value={this.props.name} />
<div>The name is: {this.props.name}</div>
</div>
)
}

}

export default MyChild

关于reactjs - 如何从 ReactJs 中的另一个组件调用 setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55028583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com