为什么当我更改存储值时 UI 没有更改

why the UI did not change when I changed the store value

我正在使用 vue 3 "vue": "^3.2.29", + typescript "typescript": "^4.5.5", 开发一个 google chrome 扩展。使用 vuex "vuex": "^4.0.2" 来管理 vue3 状态。当我收到结果时,我使用这样的调度设置值:

chrome.runtime.onMessage.addListener(
    async function(request, sender, sendResponse) {
        if (request.msg === "something_completed") {
            let result = request.data.content
            await dispatch(
              'Trans/setUsername',
              result
              )
        }
    }
);

这是 Trans 商店定义:

const SET_USER_NAME = 'SET_USER_NAME'
const SET_RANDOM_IMG = 'SET_RANDOM_IMG'

export default {
  namespaced: true,

  state: {
    username: 'Tom',
    randomImg: 'https://images.dog.ceo/breeds/bulldog-french/n02108915_8258.jpg',
  },

  getters: {
    getUsername (state: { username: string }) {
      return state.username
    },
    getRandomImg (state: { randomImg: string }) {
      return state.randomImg
    },
  },

  mutations: {
    [SET_USER_NAME]: (state: { username: string }, username: string)=>{
      state.username = username
    },
    [SET_RANDOM_IMG]: (state: { randomImg: string }, randomImg: string)=>{
      state.randomImg = randomImg
    },
  },

  actions: {
    async setUsername ({dispatch, commit, getters}: any, data: unknown) {
        debugger
        commit('GET_USER_NAME', data)
    },
  },
}

并像这样在 vue 3 设置中获取用户名:

 let username = computed(()=>getters['Trans/getUsername'])

在UI中,像这样绑定用户名:

    <span>{{username}}</span>

UI 可以成功呈现默认用户名 Tom,但是当我通过 dispath 更改用户名时,UI 用户名没有改变。我错过了什么吗?我应该怎么做才能解决这个问题?我确定 setusername 函数有效,并使用新值进行提交,但 UI 只是没有刷新。

以这种方式访问​​ UI 中的商店数据:

    <span>{{$store.state.Trans.username}}</span>

当商店数据改变时它会更新。