ReactHook中声明函数使不使用关键字的区别
今天遇到一个函数没被调用的问题,大概是这样:
有两个页面,消息列表和消息详情页面,点击列表页面进入详情页并传递一个回调函数reloadMessage
,在这个函数里调用了列表页的refreshData
方法,然后在详情页面返回列表页的时候调用这个回调函数。发现refreshData
这个方法没有调用,然后我在前面加了const
关键字就可以调用了
这是什么原因呢?加不加关键字有什么区别呢,是不是如果不加关键字这个方法就类似class
组件中的静态方法,但是像getMessageData
方法也没有const
声明也能被调用。
列表页面:
const MessageList = ({ navigation, setmessageTotal }) => {
useEffect(() => {
getMessageData(1,false);
}, []);
getMessageData = (page,isLoadMore) => {
let url = buildUrl(page);
setRequest({
isLoadMore,
urls: [url],
});
}
refreshData = () => {
console.log('有没有执行')
getMessageData(1,false);
}
//* 进入详情页
handleMessage = (item) => {
navigation.navigate("NoticeDetail", {
notice: item,
reloadMessage: () => {//* 详情页回调这个方法
refreshData()//* 如果不用const声明这个方法就不会调用
}
});
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在函数中使用 let、const 关键字进行显式声明的变量是做为局部变量,在全局范围内声明的变量为全局变量;而没有用关键字,使用直接赋值方式声明的变量会被提升到全局作用域中。也就是不加关键字直接赋值,他的作用域是全局的,你这样不加关键字的做法非常不好,建议你在开发中尽量少些这种代码。