#javascript #vue.js #rendering #render #mutation
#javascript #vue.js #рендеринг #визуализация #мутация
Вопрос:
я использую vue 3, SshPre для цвета строки
<div class="fileContent" >
<!-- <ssh-pre language="js" copy-button @copied="onCopiedDoSomething" label="Javascript" dark=true><pre>{{this.$store.state.git.decodeData}}</pre></ssh-pre> -->
<ssh-pre language="js" copy-button label="Javascript" dark=true >
<pre>{{this.$store.state.git.decodeData}}</pre></ssh-pre>
</div>
в store.js
// in .vue file
...mapMutations({
setDecodeData : 'git/setDecodeData',
}),
// in store.js
setDecodeData(state, data){
state.decodeData = data
},
функции setdata
sendContent(e){
this.axios.get(`${e.url}`, {
headers : {
Authorization : `token ${key}`
}
})
.then( res => {
console.log(res)
this.encodedData = res.data.content
this.decodeData()
})
},
decodeData(){
this.setDecodeData( decodeURIComponent(escape(window.atob(this.encodedData))))
},
таким образом, div.fileContent в тегах ssh-pre не отображается в реальном времени
но этот тег может принимать рендеринг в реальном времени
<pre>{{this.$store.state.git.decodeData}}</pre>
как я могу это исправить?? пожалуйста, помогите мне ~~
Комментарии:
1. Неясно, в чем проблема.
Ответ №1:
В шаблоне вам не нужно использовать $this, чтобы удалить это. И используйте mapGetters из vuex, если вы хотите иметь реактивность с хранилищем в вашем шаблоне. Настройте геттеры в своем хранилище и получите доступ к ним в вашем computed, которые будут отслеживать любые изменения и обновлять dom.
В магазине:
const getters = {
getDecodeData: (state) => state.decodeData
}
В макете:
computed: {
...mapGetters([
getDecodeData
])
}
<pre>{{getDecodeData}}</pre>
Для справки вы можете прочитать здесь: https://vuex.vuejs.org/guide/getters.html#method-style-access
Комментарии:
1. я оцениваю ваш идеальный ответ!!
2. @Juwon-Yun если это было полезно и отвечает на ваш вопрос, вы можете пометить это как принятое.