今天遇到一个函数没被调用的问题,大概是这样:
有两个页面,消息列表和消息详情页面,点击列表页面进入详情页并传递一个回调函数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声明这个方法就不会调用
}
});
};
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…