Vue.js ialah salah satu rangka kerja JavaScript yang paling popular dalam pembangunan bahagian hadapan hari ini. Dan uni-app ialah rangka kerja untuk membangunkan aplikasi merentas platform menggunakan Vue.js. Vuex ialah perpustakaan pengurusan negeri Vue.js dan bahagian penting dalam pengurusan keadaan data dalam apl uni. Dalam artikel ini, kami akan memperkenalkan cara aplikasi uni menggunakan Vuex untuk melaksanakan fungsi log masuk, dan boleh mencapai lebih banyak pengurusan keadaan melalui kaedah ini.
Sebelum memahami cara uni-app menggunakan Vuex untuk melaksanakan fungsi log masuk, anda perlu mempelajari teknologi berkaitan berikut:
Jika anda telah menguasai teknologi di atas , anda boleh teruskan membaca.
Sebelum memulakan pemindahan keadaan antara halaman yang berbeza, kita perlu menyediakan kerja berikut:
Buka projek dalam HBuilderX dan buat fail Login.vue dalam direktori halaman. Ubah suai fail App.vue dan ubah suai kandungannya seperti berikut:
<template> <div> <router-view /> </div> </template> <script> export default { onLaunch() { uni.reLaunch({ url: '/pages/login/login' }) } } </script>
Pasang dan konfigurasikan perpustakaan permintaan-satu dalam apl uni, dan sebutkan ia di bahagian atas utama Fail .js seperti berikut: Pustaka
import uniRequest from 'uni-request'; uniRequest.defaults.baseURL = 'http://localhost:3000/api'; // 请求拦截器 uniRequest.interceptors.request.use((config) => { const token = uni.getStorageSync('token') || ''; config.headers.Authorization = token; return config; }); // 响应拦截器 uniRequest.interceptors.response.use((response) => { if (response.statusCode === 401) { uni.removeStorageSync('token'); uni.reLaunch({ url: '/pages/login/login' }); } return response.data; }, (error) => { return Promise.reject(error); });
uni-request
memudahkan kami membuat permintaan HTTP dalam apl uni.
Selepas kerja di atas selesai, kita boleh mula melaksanakan fungsi log masuk. Berikut ialah kaedah pelaksanaan khusus:
Tulis borang log masuk dalam fail Login.vue, termasuk kotak input nama pengguna dan kotak input kata laluan. Kodnya adalah seperti berikut:
<template> <view class="container"> <form @submit.prevent="handleSubmit"> <view class="field"> <input type="text" name="username" v-model="form.username" placeholder="请输入用户名" /> </view> <view class="field"> <input type="password" name="password" v-model="form.password" placeholder="请输入密码" /> </view> <view class="field"> <button class="btn" type="submit">登录</button> </view> </form> </view> </template>
Buat computed
dalam fail Login.vue untuk menyemak sama ada nama pengguna dan kata laluan kosong, dan tulis methods > Kaedah untuk menghantar borang log masuk. Kodnya adalah seperti berikut: handleSubmit
export default { data() { return { form: { username: '', password: '' } }; }, computed: { isFormValid() { return this.form.username.trim() !== '' && this.form.password.trim() !== ''; } }, methods: { async handleSubmit() { const data = await this.$store.dispatch('login', this.form); uni.setStorageSync('token', data.token); uni.reLaunch({ url: '/pages/index/index' }); } } };
dalam direktori kedai dan tentukan modul Vuex bernama store.js
. Modul ini mengandungi tiga bahagian berikut: user
state
getters
actions
tentukan store.js
untuk mendapatkan dan menetapkan maklumat pengguna semasa dan state
untuk mengira status baharu, kodnya adalah seperti berikut: getters
const state = { user: null, token: null }; const getters = { username: (state) => { return state.user ? state.user.username : ''; }, isLoggedIn: (state) => { return !!state.token; } };
dalam store.js
untuk mengemas kini mutations
. Dalam contoh ini, kami akan mengemas kini maklumat dan token pengguna. Kodnya adalah seperti berikut: state
const mutations = { setUser(state, user) { state.user = user; }, setToken(state, token) { state.token = token; } };
dalam store.js
untuk memanggil pelayan bahagian belakang secara tak segerak untuk log masuk dan kemas kini pengguna actions
. Anda boleh menggunakan pustaka state
untuk membuat permintaan tak segerak. Kodnya adalah seperti berikut: uni-request
const actions = { async login({ commit }, { username, password }) { const { data } = await uniRequest.post('/login', { username, password }); commit('setUser', data.user); commit('setToken', data.token); return data; } };
dalam store.js
untuk mendedahkan modul yang kami takrifkan. Kodnya adalah seperti berikut: index.js
import Vue from 'vue'; import Vuex from 'vuex'; import user from './modules/user'; Vue.use(Vuex); const store = new Vuex.Store({ modules: { user } }); export default store;
untuk membuat permintaan tak segerak dan cara mentakrifkan uni-request
dan actions
untuk mengemas kini data dalam mutations
. state
Atas ialah kandungan terperinci Cara menggunakan vuex untuk melaksanakan fungsi log masuk dalam uniapp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!