在Vue中显示JSON个文件内容

Display JSON file content in Vue

json 文件中包含一些数据。我必须获取这些数据并将它们显示在组件中。

在我的 vuex 商店中,我有:

async getTodos (context) {
  const todos = []

  const response = await fetch('../../data/todos.json')
  const responseData = await response.json()

  todos.push(responseData)

  context.commit('getTodos', todos)
}

突变:

getTodos (state, payload) {
  state.todos = payload
}

和状态:

state () {
  return {
    todos: []
  }
}

现在如何获得此 todos 状态并在安装主页时显示它们?

JSON 文件示例:

[
  {
    "id": "1",
    "title": "1st todo",
    "description": "First task",
    "dueTo": "2021-10-03"
  },
  {
    "id": "2",
    "title": "2nd todo",
    "description": "Second task",
    "dueTo": "2021-10-02"
  }
]

你可以在组件中使用 mapState

<template>
   <div>
      <div>{{todos}}</div>
   </div>
</template>
<script>
import { mapState } from 'vuex';
export default {
   computed: {
      ...mapState(["todos"])
   }
}
</script>

您可以为待办事项制作 getter:

getAllTodos: (state) => state.todos

然后在模板中映射 getters :

import { mapGetters } from 'vuex';
computed: {
  ...mapGetters([ 'getAllTodos' ]),
},

<template>
  <ul>
    <li v-for="(todo, i) in getAllTodos" :key="i">{{todo}}</li>
  </div>
</template>