created() {
//axios는 아작스 리퀘스트를 쉽게 보낼 수 있도록 만들어진 패키지
//api.php에 만들어둔 Route
axios.get('/api/users').then(res => {
console.log(res);
//this.users -> date() 안에 있는 users에 접근
//res.data.user -> 가져온 값 res의 data안에 users안에 있는 값을 가르킴
this.users = res.data.users;
}).catch(error => {
console.log(error);
});
},
유저목록을 가져오기위해서는 Laravel에서 제공하는 axios를 이용해서 리퀘스트를 주고 받을 수 있다.
get('/api/users)를 통해서 api.php에 만들어놓은 route
Route::get('/users', [UserController::class, 'index']);
UserController의 index를 사용하게 된다.
App/Http/Controllers/UserController.php
public function index()
{
$users = User::all();
return response()->json([
'users' => $users
]);
}
UserController의 index에서 User 테이블에 있는 모든 유저목록을 가져온다.
그리고 그 값을 다시 response() -> json() 제이슨 데이터형태로 보내주게 된다.
ChatUserList.vue
axios.get('/api/users').then(res => {
console.log(res);
//this.users -> date() 안에 있는 users에 접근
//res.data.user -> 가져온 값 res의 data안에 users안에 있는 값을 가르킴
this.users = res.data.users;
}).catch(error => {
console.log(error);
});
api에 요청을 보내서 받아온 값을 console.log를 통해 값을 확인해 볼 수 있게 하고
this.users = res.data.users; -> data에 있는 users의 접근해서 그 값에 받어온 유저들의 정보를 넣는다.
data에 있는 users가 의미하는 것은 아래 부분
data() {
return {
//이 안에 설정된 값들은 위의 template 태그 안에서 사용가능하다.
users: []
}
},
<div
v-for="user in usersWithoutSignedInUser"
:key="user.id"
class="p-2 border-b-2 border-gray-600 hover:bg-gray-300 cursor-pointer"
@click="updateChatWith(user.id)"
>
{{ user.name }}
</div>
받아온 유저 값(users)를 반복문을 통해서 하나하나 끄집어 내는 작업이다.
그런데, 유저 목록에는 현재 서비스를 이용하고 있는 유저도 포함되어있으므로 그것을 제외해주는 코드가 필요하다.
//데이터가 변경되면, 변경된 값으로 계산해주는 (데이터가 바뀔때마다)
computed: {
//현재 로그인한 유저의 id는 유저목록에 나오면 안되니까 그것을 제외해주기 위해 filtering한 것
usersWithoutSignedInUser(){
//this를 사용해서 props의 값이나 data의 값에 접근이 가능해진다.
return this.users.filter(user => user.id != this.currentUser);
}
},
filter를 이용해서 user.id가 현재 로그인한 유저(currentUser)의 id와 같지 않은 경우에만 받도록 했다.
:current-user="currentUser"
currentUser의 값은 상위 컴포넌트에서 받아온 값임
'IT 공부 > Laravel' 카테고리의 다른 글
[ Laravel ] 웹사이트 개발 (친구 요청 및 친구 추가 기능) (0) | 2021.04.14 |
---|---|
[ Laravel ] Vue.js로 실시간 채팅(메세지 저장/불러오기) (0) | 2021.04.01 |
[ Laravel ] Vue.js를 이용한 실시간 채팅 (필요한 개념) (0) | 2021.03.31 |
[ Laravel ] 친구추가 기능 (0) | 2021.03.28 |
[ Laravel ] 게시판 만들기 (0) | 2021.03.26 |