【发布时间】:2019-06-22 20:34:03
【问题描述】:
我正在为 React 使用 Easy Peasy 状态管理。我想从一个商店位置创建多个 Axios 调用,并将其导入到我需要显示正确数据的每个页面中。例如,我正在尝试获取 JSON 占位符数据并在组件内部使用该数据以使用 Hooks 将其推送到状态。
但我收到以下错误:
model.js:14 Uncaught (in promise) TypeError: actions.setTodos is not a function
at model.js:14
有人可以帮帮我吗?我做错了什么?
我的商店代码(model.js):
import { thunk } from 'easy-peasy';
export default {
todos: [],
fetchTodos: thunk(async actions => {
const res = await fetch(
'https://jsonplaceholder.typicode.com/todos?_limit=10'
);
const todos = res.json();
actions.setTodos(todos);
}),
};
我的页面组件联系人:
import React, { useState, useEffect } from 'react';
import { useStoreActions } from 'easy-peasy';
import ReactHtmlParser from 'react-html-parser';
import { API_URL } from 'constants/import';
// import axios from 'axios';
const Contact = () => {
const [contactPage, setContactPage] = useState([]);
const { page_title, page_content, page_featured_image } = contactPage;
const fetchTodos = useStoreActions(actions => actions.fetchTodos);
useEffect(() => {
fetchTodos();
}, []);
return (
<section className="contact">
<div className="page">
<div className="row">
<div className="col-xs-12">
<h3 className="section__title">{page_title}</h3>
{ReactHtmlParser(page_content)}
{page_featured_image && (
<img src={API_URL + page_featured_image.path} />
)}
</div>
</div>
</div>
</section>
);
};
export default Contact;
【问题讨论】:
-
setTodos定义? -
@xadm 你是什么意思?我错过了什么吗?
-
应该在某个地方定义? f.e.店里有吗?
-
您必须使用 easy peasy 为您提供的操作功能向您的商店添加一个名为 setTodos 的操作。
标签: javascript reactjs