React Native如何在for循环中传递带有参数的函数



我有一个使用Javascript的React Native应用程序的代码,我正在创建一个对象数组,这些对象是上下文菜单的数据。

当用户从菜单中选择一个项目时,应该调用handleSelectedProject它确实这样做并传递选定的项目对象,但项目变量未定义。

知道获取选中的项目对象应该使用什么语法吗?

提前感谢。

export default MobileMenu = () => {
const projects = useSelector(getPickerList);
const [menuItems, setMenuItems] = useState([]);
useEffect(() => {
loadMenuItems();
}, [projects]);
const handleNewProject = () => {
console.info("New Project");
};
const handleSelectedProject = (project) => {
console.info("Project...", project);
};
const loadMenuItems = () => {
let items = [];
items.push({
label: "New Project",
onPress: handleNewProject,
seperator: false,
});
items.push({ seperator: true });
for (var i = 0; i < projects.length; i++) {
items.push({
label: projects[i].project_name,
onPress: () => handleSelectedProject(projects[i]),
seperator: false,
});
}
setMenuItems(items);
};
return (
<ScrollView>
<View style={styles.container}>
<ContextMenu items={menuItems} />
</View>
</ScrollView>
);
};

问题是您的for循环。当循环已经完成时,onPress回调将引用循环变量,此时i超出范围,因此projects[i]将求值为undefined

简单的解决方案是使用块作用域变量i,这样projects[i]就真正引用了专门为该循环迭代创建的变量。您可以将var i替换为let i

最新更新