gpt4 book ai didi

javascript - 使用 React-Context 时对象不可迭代错误

转载 作者:行者123 更新时间:2023-12-02 21:16:00 25 4
gpt4 key购买 nike

所以我最近开始使用 React 并正在学习 Context Api。我的代码的热情是:

export const UsersContext = createContext();
export function UsersProvider(props) {
const fetchedItem = async function () {
const data = await fetch('https://jsonplaceholder.typicode.com/users');
const users = await data.json();
setUsers(users);
};
const [users, setUsers] = useState([]);
useEffect(function () {
fetchedItem();
}, []);

return (
<UsersContext.Provider value={[users, setUsers]}>{props.children}</UsersContext.Provider>
);
}

我尝试像这样导入和迭代用户数组:

import { UsersContext, UsersProvider } from './UsersContext';
export default function UsersPage() {
const [users, setUsers] = useContext(UsersContext);
return (
<UsersProvider>
{users.map(function (user) {
//I do something with user object});}
</UsersProvider>

问题是这不起作用,我不确定在网络上搜索它的术语是什么。我得到 TypeError: Object is not iterable (cannot read property Symbol(Symbol.iterator)) 这对我来说意味着 users 不是数组?但就我而言是这样。对于修复/调试这个问题有什么建议吗?

最佳答案

您在提供程序外部使用 useContext,您应该在子组件中使用 useContext

import { UsersContext, UsersProvider } from './UsersContext';
export default function UsersPage() {
const [users, setUsers] = useContext(UsersContext);
return (
<UsersProvider>
{users.map(function (user) {
<div key={user.id}>{user.id}</div>
})}
</UsersProvider>
);
}

相同
import { UsersContext, UsersProvider } from './UsersContext';
export default function UsersPage() {
return (
<UsersContext.Consumer>
{([users, setUsers]) => (
<UsersProvider>
{users.map(function(user) {
<div key={user.id}>{user.id}</div>;
})}
</UsersProvider>
)}
</UsersContext.Consumer>
);
}

如您所见,消费者不是提供者的子级,因此没有向其提供任何内容。在子组件中使用它是可行的。

import { UsersContext, UsersProvider } from './UsersContext';
export default function UsersPage() {
return (
<UsersProvider>
<UsersPageChild />
</UsersProvider>
);
}

function UsersPageChild() {
const [users, setUsers] = useContext(UsersContext);
return (
<div>
{users.map(function(user) {
<div key={user.id}>{user.id}</div>;
})}
</div>
);
}

关于javascript - 使用 React-Context 时对象不可迭代错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60968735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com