问题描述
我希望组件对他从Method-Style Getter获得的状态的变化做出反应,据我了解,它不是自动完成的,所以我考虑过从组件触发事件最初会更改状态,然后使用本地状态手动重新呈现数据。
(我需要从方法样式的Getter获取状态,因为我想对其进行过滤)
我不确定这样做是否正确。我想知道是否有更好的方法来应对这种状态的变化。
最初更改状态的组件
import { mapActions } from "vuex";
export default {
name: "AddTask",data() {
return {
taskName: "",taskDetail: "",taskCourse: "",taskDate: "",};
},methods: {
...mapActions(["addTask"]),postForm() {
//here the state is changed
this.addTask({
taskName: this.taskName,taskDetail: this.taskDetail,taskCourse: this.taskCourse,taskDate: this.taskDate,});
},},};
主页组件
<template>
<div class="home">
<h1>Agenda</h1>
<DatePicker />
<!-- inside TasksGrid there is multipleTaskContainer -->
<TasksGrid />
</div>
</template>
任务存储模块
const state = {
tasks: [],date: {},};
const getters = {
allTasks: (state) => {
state.tasks;
},courseTasks: (state) => (course) => {
return state.tasks.filter((task) => {
return task.course === course;
});
},weekCourseTasks: (state) => (course,momentObject) => {
/// (...)
return state.tasks.filter((task) => {
return (
task.course === course &&
moment(task.dateFor).isBetween(weekStart,weekEnd)
);
});
},NowMoment: (state) => {
return state.date;
},};
const actions = {
async fetchTasks({ commit }) {
const fetchRes = await axios.get("http://localhost:5000/api/tasks");
commit("setTasks",fetchRes.data);
},async addTask({ commit },taskObject) {
console.log(taskObject);
const newTask = await axios.post(
"http://localhost:5000/api/tasks",taskObject
);
commit("addTask",newTask);
},setDate({ commit },momentObject) {
commit("setDate",momentObject);
},};
const mutations = {
setTasks: (state,newTasks) => {
state.tasks = newTasks;
},setDate: (state,newDate) => {
state.date = newDate;
},addTask: (state,newTask) => {
console.log(state.tasks);
state.tasks = [...state.tasks,newTask];
},};
export default {
state,getters,actions,mutations,};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)