【发布时间】:2021-03-03 22:03:19
【问题描述】:
在这里已经获得了一些很好的帮助(我是 Vue 的新手,我学到了很多东西,这很酷)我还有一个问题。我的组件的状态正在按预期更新。在搜索字段中输入值时,该值将发送到 API,API 将响应并更新状态。现在的问题是我需要单击路由(而不是使用刷新/f5),然后才能在当前视图中真正看到更新的组件。到目前为止我的代码:
search.vue(不介意学生插值,虚拟数据)
<div class="mx-auto mt-2 max-w-7xl sm:px-6 lg:px-8">
<div class="flex justify-between flex-1 max-w-xl px-4">
<div class="px-4 py-6 sm:px-0">
<ul id="tutors" class="grid grid-cols-1 gap-6">
<li
v-for="tutor in tutors"
:key="tutor.name"
class="overflow-hidden bg-white border rounded-lg shadow-md"
>
<div class="flex">
<div class="w-2/3">
<img
class="flex-shrink-0 object-cover w-full h-64 mx-auto bg-black"
:src="student.imageUrl"
:alt="student.imageAlt"
/>
</div>
<div class="p-6">
<div
class="text-xs font-semibold leading-snug tracking-wide text-gray-500 uppercase"
>
{{ student.subject }} • {{ student.age }} jaar
</div>
<h4 class="text-lg font-semibold leading-5 tracking-wide">
{{ tutor.name }}
</h4>
<div class="mt-2">
{{ student.hourlyRate }}€
<span class="text-sm text-gray-600">per uur</span>
</div>
<div class="mt-2">
<span class="font-semibold text-light-blue-800"
>{{ student.rating }}/5 sterren</span
>
<span class="text-sm text-gray-600 truncate">
(na {{ student.reviewCount }} reviews)
</span>
</div>
</div>
</div>
</div>
</li>
</ul>
search.vue JS
<script>
import { mapGetters, mapState } from 'vuex'
export default {
name: 'Zoeken',
components: {},
data: () => ({
postcode: '',
attributes: [],
}),
computed: {
...mapGetters(['isAuthenticated', 'loggedInUser']),
...mapState(['tutors']),
},
methods: {
async fetchTutors() {
const postcode = this.postcode
await this.$store.dispatch('loadAllTutors', postcode)
},
},
layout: 'app',
middleware: 'auth',
}
</script>
store/index.js
export const getters = {
isAuthenticated(state) {
return state.auth.loggedIn
},
loggedInUser(state) {
return state.auth.user
},
}
export const state = () => ({})
export const mutations = {
SET_TUTORS(state, val) {
if (val == null || val.update === undefined) {
state.tutors = val
} else {
const update = val.update
state.tutors = { ...state.tutors, ...update }
}
},
}
export const actions = {
loadAllTutors({ commit }, postcode) {
this.$axios
.post('http://notawanker.com/tutors/search', {
postcode,
})
.then(({ data }) => {
commit(
'SET_TUTORS',
data.map((item) => item.attributes)
)
})
.catch((error) => console.log(error))
},
}
这将是应用程序的主要组件,可以在其中搜索附近的用户。主要部分和 API 正在工作,但使其反应仍然是一个问题。我尝试了几种不同的方法都没有成功。非常感谢。
【问题讨论】: