代码之家  ›  专栏  ›  技术社区  ›  Bussller Junior Vieira

electron vue:存储属性集但不渲染(VUEX)

  •  0
  • Bussller Junior Vieira  · 技术社区  · 7 年前

    各位,

    我正在启动electron vuejs桌面应用程序编程。我正在学习 vuex 以自学为例。我的问题是:

    我有一个组件,它的模板是,

    <template>                                                                       
    <div id="wrapper">                                                             
     <main>                                                                       
      <div class="left-side">                                                    
        <span class="title">                                                     
          <h2>{{ titleName }}</h2>                                               
        </span>                                                                                                             
      </div>                                                                                                                                                 
     </main>                                                                      
    


    <script>                                                                        
    import { mapState } from 'vuex'                                                 
    
    export default {                                                                
      name: 'game-page',                                                                                                                         
      computed: mapState([ 'titleName' ]) // map this.title to store.state.title    
    }  
    </script> 
    

    我已经定义了 titleName 我的财产 store.js 作为 ./store/modules/store.js

    cont state = {
      titleName: 'Welcome to planet earth'
    }
    
    export default {
      state
    }
    

    vue-devtools 慰问。我可以看到 商店.js 在控制台里。但是,我没有得到组件中呈现的标题。

    mapState 从存储中获取属性并绑定到组件中的变量。基于这种理解,我没有定义 gettr ,但是,它似乎没有发生。

    我一定是做了些傻事,或者错过了一些显而易见的事情。有人能解释一下如何解决这个问题吗? Vue-2.5.17

    这是我的梦想 index.js

    import Vue from 'vue'
    import Vuex from 'vuex'
    import state from './modules/store.js'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      modules: {
        state
      },
      strict: process.env.NODE_ENV != 'production'
    })
    

    我的目录结构是,

    src
    ├── index.ejs
    ├── main
    │   ├── index.dev.js
    │   └── index.js
    └── renderer
        ├── App.vue
        ├── assets
        │   └── logo.png
        ├── components
        │   ├── StonePaperScissors
        │   │   └── GameStates.vue
        │   └── StonePaperScissors.vue
        ├── main.js
        ├── router
        │   └── index.js
        └── store
            ├── index.js
            ├── modules
                ├── index.js
                └── store.js
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Max Sinev    7 年前

    首先,我认为你应该给你的模块起个不同的名字 state 为了避免将来混淆:)。我将在下面使用“你的模块名称”。

    import Vue from 'vue'
    import Vuex from 'vuex'
    import state from './modules/store.js'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      modules: {
        your_module_name: state
      },
      strict: process.env.NODE_ENV != 'production'
    })
    

    如果你加载你的“子存储”模块,但是 没有命名空间 您可以使用另一个解决问题 mapState 签名:

    computed: mapState({ titleName: state => state.your_module_name.titleName })
    

    或者你可以做一个模组 命名空间 使用这个:

    computed: mapState('your_module_name', ['titleName'])
    

    对, 非命名空间模块的行为并不明显。