반응형
소품이 비동기일 때 Vue 구성 요소가 업데이트되지 않음
이 컴포넌트가 있습니다.
<template>
<div class="list-group">
<div v-for="user in data">
<!-- omitted for brevity -->
</div>
</div>
</template>
<script>
export default ("users-list", {
props: ['users']
,
data() {
return {
data: this.users
}
}
});
</script>
이 구성 요소는 다른 구성 요소에서 사용되며 $.ajax(약속)로 데이터를 가져오고 데이터를 설정합니다.
<template>
<div>
<users-list v-bind:users="users"></users-list>
<div>
</template>
<script>
import UsersService from './users.service.js';
import UsersList from './users.list.vue';
export default ('users-main', {
components: {
'users-list': UsersList
},
mounted() {
this.refresh();
},
data() {
return {
data: null,
message: null,
user: null
}
},
methods: {
refresh() {
let service = new UsersService();
service.getAll()
.then((data) => {
this.data = data;
})
.catch((error) => {
this.message = error;
})
},
selected(user) {
this.user = user;
}
}
});
</script>
이것이 Users Service 입니다.
import $ from 'jquery';
export default class UsersService {
getAll() {
var url = "/Api/Users/2017";
return new Promise((resolve, reject) => {
$.ajax({
url: url,
success(data) {
resolve(data);
},
error(jq, status, error){
reject(error);
}
});
});
}
}
보다시피 서비스에서는Promise
내가 바뀌면
<div v-for="user in data">
사용자들을 볼 수 있습니다.
<div v-for="user in users">
질문:.비동기 소품 값을 컴포넌트에 전달하려면 어떻게 해야 합니까?
사용자 목록에서 데이터를 "onInit"로 한 번 설정합니다.리액티브성을 위해
computed:{
data(){ return this.users;}
}
또는
watch: {
users(){
//do something
}
}
무슨 뜻입니까?
보시다시피 Promise로 데이터를 얻습니다.
<div v-for="user in data">
사용자들을 볼 수 있습니다.
<div v-for="user in users">
사용하다<div v-for="user in users">
작동해야 하는데 뭐가 문제죠?
언급URL : https://stackoverflow.com/questions/44154120/vue-component-not-updated-when-props-are-async
반응형
'programing' 카테고리의 다른 글
트램펄린 함수가 뭐죠? (0) | 2022.07.10 |
---|---|
nuxt.js의 최대 콜스택 사이즈가 초과된 에러를 해결하는 방법 (0) | 2022.07.10 |
Vue 설정 colspan (0) | 2022.07.10 |
Vue.js 라우터가 RouteUpdate 전에 호출하지 않음(typescript) (0) | 2022.07.10 |
렌더링하기 전에 데이터를 기다리는 Vue JS (0) | 2022.07.10 |