vue js将数据从api发送到新页面

uqdfh47h  于 2021-09-23  发布在  Java
关注(0)|答案(3)|浏览(392)

我是vue js新手,我想知道如何在两个组件之间发送数据。我正在构建一个vue应用程序,从api获取用户列表并显示它们。我想知道我可以在两个组件之间移动数据,以便在新页面上查看更多详细信息。
下面是我在表格中显示数据的html代码

  1. <table class="table table-hover table-striped">
  2. <thead>
  3. <tr>
  4. <th scope="col">ID</th>
  5. <th scope="col">Name</th>
  6. <th scope="col">Occupation</th>
  7. <th scope="col">Email</th>
  8. <th scope="col">Bio</th>
  9. <th scope="col">View</th>
  10. <th scope="col">Edit</th>
  11. </tr>
  12. </thead>
  13. <tbody>
  14. <tr v-for="user in users" :key="user.id">
  15. <th scope="row">{{ user.id }}</th>
  16. <td>{{ user.name }}</td>
  17. <td>{{ user.username}}</td>
  18. <td>{{ user.email }}</td>
  19. <td>{{ user.phonenumber}}</td>
  20. <router-link to="/users" class="btn btn-primary">View</router-link>
  21. </td>
  22. <td>
  23. <router-link @click="shareData" :key="user.id" to="/edit" class="btn btn-primary">Edit</router-link>
  24. </td>
  25. </tr>
  26. </tbody>
  27. </table>

这是我的js代码

  1. <script>
  2. import axios from "axios";
  3. import moment from "moment";
  4. export default {
  5. name: 'Home',
  6. created() {
  7. this.getUsers();
  8. },
  9. data() {
  10. return {
  11. users: [],
  12. };
  13. },
  14. methods: {
  15. getUsers() {
  16. axios
  17. .get("https://607e868602a23c0017e8b79e.mockapi.io/api/v1/users")
  18. .then((response) => {
  19. console.log(response.data);
  20. this.users = response.data;
  21. })
  22. .catch((error) => {
  23. console.log(error);
  24. });
  25. },
  26. format_date(value) {
  27. if (value) {
  28. return moment(String(value)).format("DD-MM-YYYY");
  29. }
  30. },
  31. shareData(){
  32. this.$router.push({name:"Users", params:{data:this.users}})
  33. },
  34. editData(){
  35. }
  36. },
  37. };

如何将数据移动到视图和编辑管线/构件

j91ykkif

j91ykkif1#

根据应用程序的复杂性,您可以使用vuex来存储应用程序的所有状态,或者如果您有一个小应用程序并且确实想花时间学习vuex,您可以简单地使用道具。使用道具,您可以将对象(数据)传递到组件甚至管线。

vm0i2vca

vm0i2vca2#

您可以使用vue路由器的动态路由匹配来解决此类问题。您可以简单地重构您的 /user 终点到 /user/:id 在您登陆时调用的组件中 /user ,您只需进行api调用并填写详细信息。您需要更新第一个路由器链接,以获得以下形式的id: /user/123 在组件中,您可以通过调用 this.$route.params.id .

bgtovc5b

bgtovc5b3#

如果要将数据从一个同级组件传递到另一个同级组件(具有相同父级的组件),则可以使用事件总线。
这是一篇我用来学习事件总线的文章
若要将数据从父组件传递到子组件,只需使用props。
如果要在代码中的任何位置获取数据,请使用vuex。
vuex确实非常方便。快乐学习。

相关问题