IT이야기

Vuex-변이로 여러 변수를 전달합니다.

cyworld 2022. 3. 7. 21:34
반응형

Vuex-변이로 여러 변수를 전달합니다.

나는 사용자 vuejs과 laravel의 여권을 사용해 인가하려고 노력하고 있다.

나는 vuex 변이로 액션을 통해 여러 변수를 보내는 방법에 대해 알 수 없다.

-가게-

export default new Vuex.Store({
  state: {
    isAuth: !!localStorage.getItem('token')
  },
  getters: {
    isLoggedIn(state) {
      return state.isAuth
    }
  },
  mutations: {
    authenticate(token, expiration) {
      localStorage.setItem('token', token)
      localStorage.setItem('expiration', expiration)
    }
  },
  actions: {
    authenticate: ({
      commit
    }, token, expiration) => commit('authenticate', token, expiration)
  }
})

-로그인 방법

login() {
  var data = {
    client_id: 2,
    client_secret: '**************************',
    grant_type: 'password',
    username: this.email,
    password: this.password
  }
  // send data
  this.$http.post('oauth/token', data)
    .then(response => {
      // send the parameters to the action
      this.$store.dispatch({
        type: 'authenticate',
        token: response.body.access_token,
        expiration: response.body.expires_in + Date.now()
      })
    })
}

나는 매우 도움이 어떤 종류에 대해 감사해야 할 것이다!

이러한 두개의 인수 기대한다:state그리고payload어디 그 가게의 현재 상태 Vuex이 알아서 혼자 그 첫번째 인수로 전달됩니다, 둘째 인수 당신이 통과하는데 필요한 매개 변수가 들어 있다.

가장 쉬운 방법은 매개 변수에 합격할 때까지 깔려 있다.

mutations: {
    authenticate(state, { token, expiration }) {
        localStorage.setItem('token', token);
        localStorage.setItem('expiration', expiration);
    }
}

그리고 나중에 할 수 있는 것은 단순히 당신의 행동.

store.commit('authenticate', {
    token,
    expiration,
});

간단히 말해서 키 배열로 당신의 페이 로드를 구축할 필요가 있다.

payload = {'key1': 'value1', 'key2': 'value2'}

그리고 직접 액션에 유상 탑재량을 보내 주세요.

this.$store.dispatch('yourAction', payload)

당신의 행동에 변화가 없다.

yourAction: ({commit}, payload) => {
  commit('YOUR_MUTATION',  payload )
},

당신의 돌연변이에서 키로 값이라고 부른다.

'YOUR_MUTATION' (state,  payload ){
  state.state1 = payload.key1
  state.state2 =  payload.key2
},

나는 이것이 간결한 빛으로 단지 두 매개 변수를 받아들이면 행동을 읽어 여러분이 행동에 여러 변수를 주려고 한다 생각한다고 생각한다.context그리고payload어느 것이 당신의 데이터에서 그렇게 예를 들자 전수하기를 원한다.

관리 설정

대신

actions: {
        authenticate: ({ commit }, token, expiration) => commit('authenticate', token, expiration)
    }

하다

actions: {
        authenticate: ({ commit }, {token, expiration}) => commit('authenticate', token, expiration)
    }

(파견)관리를 호출하면

대신

this.$store.dispatch({
                  type: 'authenticate',
                  token: response.body.access_token,
                  expiration: response.body.expires_in + Date.now()
              })

하다

this.$store.dispatch('authenticate',{
                  token: response.body.access_token,
                  expiration: response.body.expires_in + Date.now()
              })

이게 도와 줄 희망

참조URL:https://stackoverflow.com/questions/46097687/vuex-passing-multiple-parameters-to-mutation

반응형