【发布时间】:2021-06-23 18:20:41
【问题描述】:
我正在尝试使用这个自定义钩子,它可以为我带来一条来自路由的本地消息。
import { useState } from 'react';
import axios from 'axios';
const useLocalFlashMessages = () => {
const [LocalFlashMessage, setLocalFlashMessage] = useState();
const handleMessages = async () => {
setLocalFlashMessage(await axios.get('http://localhost:3000/localFlashMessages/'))
return LocalFlashMessage
};
return [
LocalFlashMessage,
handleMessages
]
}
export default useLocalFlashMessages
所以,当我尝试从我的 App.js 组件中的这个钩子调用“handleMessage”函数时,会出现以下警告:警告:函数作为 React 子级无效。如果您返回一个组件而不是从渲染中返回,则可能会发生这种情况。或者,也许您打算调用这个函数而不是返回它。
还有我的 App.js:
import './css/Header.css';
import Body from './components/Body';
import Footer from './components/App/Footer';
import useLocalFlashMessages from './hooks/useLocalFlashMessages';
function App() {
const [LocalFlashMessage, handleMessages] = useLocalFlashMessages()
console.log(LocalFlashMessage)
return (
<div className="Main">
<main className="Main-body">
{LocalFlashMessage ? <div> {LocalFlashMessage}</div> : <div>{handleMessages}</div>}
<Body />
</main>
<footer className="Main-footer">
<Footer />
</footer>
</div>
);
}
export default App;
我能做些什么来解决这个问题?
【问题讨论】:
-
您能否确认第一个
div中缺少的{只是复制/粘贴错字?您还可以通过尝试在不呈现Body和Footer的情况下消除其他可能的原因吗? -
没错,缺少的“{”是复制粘贴错误,我将对其进行编辑。另一方面,我尝试在没有正文和页脚的情况下进行渲染,但警告不断出现。
-
您的控制台日志输出什么?
console.log(LocalFlashMessage)? -
当我在另一个组件中注册时,它会显示一条消息,例如“您已成功注册”。我只是把它用于测试。
-
您的代码没有显示您实际调用
handleMessages... 的位置,而带有LocalFlashMessage... 的三元组是否缺少某些东西?
标签: javascript reactjs react-hooks