this.$store.commit 存储之后怎么取出来
时间: 2023-09-11 07:06:29 浏览: 159
使用this.$store.state来获取存储在Vuex中的数据。例如:
```
// 存储数据
this.$store.commit('setUserName', 'John')
// 获取数据
console.log(this.$store.state.userName) // 输出John
```
在这个示例中,我们使用了一个名为“setUserName”的mutation来存储用户名。然后我们可以使用this.$store.state.userName来获取这个值并输出它。
相关问题
怎么往this.$store.state存数据
在Vuex中,要往`this.$store.state`存储数据,需要通过`mutations`或者`actions`来进行状态管理。
一般来说,`mutations`用于同步修改`state`中的数据,而`actions`则用于异步修改数据。
以下是一个示例,假设我们要往`state`中的`user`属性存储一个`name`字段的值:
1. 在Vuex的store.js文件中,定义一个名为`setName`的`mutation`:
```
// store.js
const store = new Vuex.Store({
state: {
user: {
name: ''
}
},
mutations: {
setName(state, newName) {
state.user.name = newName
}
}
})
```
2. 在组件中,通过`this.$store.commit()`来调用`setName` mutation,存储数据:
```
// component.vue
this.$store.commit('setName', 'John')
```
这样,就可以将`'John'`这个值存储到`state.user.name`属性中了。注意,在mutations中修改state的数据是同步的,只有在mutations中才可以直接修改state中的数据。如果需要异步修改数据,需要使用actions。
vue中点击某一行,跳转到对应页面,并把当前行的id 通过 this.$store.commit存入vuex中,在对应页面中获取到该id的值,举例用代码实现
### 回答1:
首先在点击行的时候,可以通过 @click 事件触发一个方法,并将当前行的 id 作为参数传入:
```html
<template>
<div>
<table>
<tbody>
<tr v-for="item in items" :key="item.id" @click="goDetail(item.id)">
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: "item1" },
{ id: 2, name: "item2" },
{ id: 3, name: "item3" },
],
};
},
methods: {
goDetail(id) {
this.$store.commit("SET_ID", id);
this.$router.push("/detail");
},
},
};
</script>
```
在上述代码中,我们通过 `goDetail` 方法来处理点击事件,并将当前行的 id 通过 `this.$store.commit` 存入了 vuex 中,然后使用 `$router.push` 方法跳转到对应的页面。
接下来,在对应的页面中,可以通过 `this.$store.state.id` 来获取到之前存入的 id 值:
```html
<template>
<div>
<h1>Detail Page</h1>
<p>Current ID: {{ id }}</p>
</div>
</template>
<script>
export default {
computed: {
id() {
return this.$store.state.id;
},
},
};
</script>
```
在上述代码中,我们使用了 computed 计算属性来获取 vuex 中存储的 id 值,并将其渲染到页面上。需要注意的是,在使用 vuex 之前,需要先在项目中安装 vuex,并在 main.js 中引入和使用。
### 回答2:
在vue中,我们可以通过点击某一行来实现页面跳转,并将当前行的id存入vuex中。下面通过一个简单的例子来说明:
假设我们有一个列表页面,列表中显示了若干行数据,每行数据都有一个唯一的id。现在我们需要实现点击某一行后跳转到详情页面,并将该行的id存入vuex中。
首先,在列表页面构建点击事件,获取当前行的id,并将其存入vuex中:
```vue
<template>
<div>
<ul>
<li v-for="item in list" :key="item.id" @click="goToDetail(item.id)">
{{ item.name }}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{ id: 1, name: '数据1' },
{ id: 2, name: '数据2' },
{ id: 3, name: '数据3' }
]
};
},
methods: {
goToDetail(id) {
this.$store.commit('saveId', id);
// 跳转到详情页面
this.$router.push('/detail');
}
}
};
</script>
```
在上述代码中,通过v-for循环渲染列表,并绑定每一行的点击事件。在点击事件中,我们首先将当前行的id通过this.$store.commit方法存入vuex中,然后使用this.$router.push进行页面跳转到详情页面。
接下来,在详情页面获取并使用通过vuex存储的id:
```vue
<template>
<div>
<p>当前行id:{{ id }}</p>
</div>
</template>
<script>
export default {
computed: {
id() {
return this.$store.state.id;
}
}
};
</script>
```
在详情页面的计算属性中,通过this.$store.state.id来获取之前存入vuex中的id,并将其用于页面展示。
通过上述代码,我们实现了点击某一行跳转到详情页面,并将当前行id存入vuex中,在详情页面中获取到并使用该id的功能。
### 回答3:
Vue中实现点击某一行跳转到对应页面,并将当前行的id存入Vuex中,然后在对应页面中获取该id的值,可以按照以下步骤进行:
1. 在Vue组件中,使用v-for循环渲染行,并为每行绑定点击事件,并传递行的id参数:
```
<template>
<div>
<div v-for="item in items" :key="item.id" @click="handleClick(item.id)">
{{ item.name }}
</div>
</div>
</template>
```
2. 在Vue实例的methods中定义点击行的处理函数,通过this.$store.commit方法将当前行的id存入Vuex中:
```
<script>
export default {
methods: {
handleClick(id) {
this.$store.commit('SET_SELECTED_ID', id);
// 跳转到对应页面的路由代码
}
}
}
</script>
```
3. 在Vuex的store中定义state和mutation,将当前行的id存入state中:
```
// vuex/store.js
export default new Vuex.Store({
state: {
selectedId: null
},
mutations: {
SET_SELECTED_ID(state, id) {
state.selectedId = id;
}
}
});
```
4. 在对应页面中,通过计算属性或者直接从Vuex中获取到存入的id值:
```
<template>
<div>
<p>当前行的id为: {{ selectedId }}</p>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
computed: {
...mapState(['selectedId'])
}
}
</script>
```
通过以上代码实现了点击某一行跳转到对应页面,并将当前行的id存入Vuex中,在对应页面中可以获取该id的值。
阅读全文