gpt4 book ai didi

javascript - ReactJS - 将 setState 与 firebase 监听结合使用

转载 作者:行者123 更新时间:2023-12-01 01:20:29 24 4
gpt4 key购买 nike

嗯,我已经知道我们应该做这样的事情来保持状态与 firebase 更改保持同步。

import FirebaseRef from '...'
.
.
.
class MyComponent extends React.Component {
state = {
maxVotes: 0
}

componentDidMount() {
const { boardId } = this.props
FirebaseRef.child(`boards/${boardId}/maxVotes`).on('value', snapshot => {
this.setState({maxVotes: snapshot.val()})
})
}

但我的编码习惯是委托(delegate)其他文件中的API调用并将其导入到组件中。我可以做这样的事情吗?

import { setMaxVotes } from ...
.
.
.
componentDidMount() {
const { boardId } = this.props
setMaxVotes(boardId)
}

setMaxVotes 方法是什么样的?我应该把这样的事情复杂化吗,或者这不是最佳实践?

最佳答案

将 API 调用委托(delegate)给不同的模块是很常见的,但在不同的模块中设置 React 组件状态并不是最佳实践。因此,您可以为 API 调用创建不同的模块,但您应该在组件本身中设置状态。代码可能看起来像这样

componentDidMount() {
const { boardId } = this.props
setMaxVotes(boardId, 'value', snapshot => {
this.setState({maxVotes: snapshot.val()})
})
}

setMaxVotes(boardId, eventType, cb) {
FirebaseRef.child(`boards/${boardId}/maxVotes`).on(eventType, cb);
}

关于javascript - ReactJS - 将 setState 与 firebase 监听结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54278308/

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