【问题标题】:Update React Native page when there is a change in ClearDB database当 ClearDB 数据库发生变化时更新 React Native 页面
【发布时间】:2021-06-18 18:33:14
【问题描述】:

我正在开发这个基于 QR 码的应用程序,它使用存储在 Heroku 服务器上的 ClearDB MySQL 数据库。前端使用 Node.js 和 Express 构建的 REST API 与数据库通信

每当用户扫描二维码时,数据库中的二维码值都会发生变化。但我不知道如何在前端立即反映这种变化。基本上,我需要帮助的是找到一种方法,当数据库中的值发生变化时自动刷新页面,并根据新值显示新的二维码。这样当用户扫描代码时,它会立即在他的页面上更新,而不仅仅是在数据库中。

我研究了套接字,但不太了解如何将它集成到我的应用程序中,尤其是在涉及前端时。

【问题讨论】:

    标签: node.js react-native cleardb


    【解决方案1】:

    您可以使用状态值来检测更改。 你声明一个布尔类型的状态值(你想要的任何类型)。然后你可以在更新数据库数据的模块中实现setState函数(类组件的情况下)或useState挂钩(功能组件的情况下)。 例如:

    const [isChanged, setChanged] = useState(false);
    const updateQRData = (data) => {
    ... Update codes
    setChanged(isChanged => !isChanged);
    }
    

    然后就可以使用 useEffect 钩子了:

    useEffect(() => {
    ... Write some codes
    }, [isChanged]);
    

    【讨论】:

    • 非常感谢,这确实帮了我的忙!
    【解决方案2】:

    您如何存储 QR 码的信息?在 Redux 中?还是地方州?您使用的是基于类的组件还是挂钩?如果您想要最少的头痛,我强烈建议您使用钩子。让我知道,我可以提供代码的更多细节。

    您的最终产品将如下所示:

    const [qrData, setQrData] = useState(null)
    
    const updateDatabase = () => {
        axios.post(`your/database/url/with/your/data/attached`).then(res => {
            setQrData(res.data.your.response.object.from.database)
        }
    }
    
    

    【讨论】:

    • 我确实在使用钩子。 QR 码存储在数据库的表中。该数据库托管在 Heroku 服务器上。对不起,如果我的解释不够清楚,我在这方面很新,还在学习
    • 没关系。我也不清楚,哈哈。我在问您将 QR 码的值存储在什么地方?从您的回复来看,虽然我很确定您只是使用标准的当地状态,所以我会根据这个给您回复。 - 对服务器进行 api 调用 - 使用 .then(res -> {}) 链接它 - 在成功响应后,我想你会从服务器收到更新的 QR 数据 - 获取该数据并更新你的本地状态对象对于 QR 码 - 由于您使用的是钩子,因此 UI 应立即重新渲染
    猜你喜欢
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2020-07-03
    • 2018-07-24
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多