私は、認証に応じて、条件付きのレンダリングを持つナビゲーションバーがあります。Vuexの状態を変更してもコンポーネントは再描画されませんか?
<template>
<div id="routing">
<b-navbar variant="light" type="light">
<b-navbar-brand>
<img id="drage" src="../assets/icon.svg"/>
<b-nav-text id="txt">
drac1
</b-nav-text>
<div v-if="loggedIn === true">
<router-link id="link" to="/" exact>
Home
</router-link>
<router-link id="link" to="configuration" exact>
Config
</router-link>
<b-nav-text id="hellotext">
Hello, {{ username }}
</b-nav-text>
</div>
</b-navbar-brand>
</b-navbar>
</div>
</template>
<script>
export default {
name: 'topnavbar',
data() {
console.log(this.$store.state.loggedIn) // Changes from false to true as it is supposed to, and logs it.
return {
username: this.$store.state.username,
loggedIn: this.$store.state.loggedIn
}
}
}
</script>
条件がレンダリング値loggedIn
は、ユーザーがログインしたときfalse
からtrue
への変更を行うに依存しかし、router-link
アイテムとしても。ユーザ名のナビゲーションテキストが表示されないためです。
この場合、店舗状態が変更されてもナビゲーションバーが再描画されないのはなぜですか?あなたは計算されたプロパティを使用する必要が反映される変更のために、それは間違って使用している
コンポーネントが作成されたときに 'data'だけ、一度初期化されます。計算されたものが必要です。 – Bert
私は、計算されたプロパティのユーザー名 "は割り当てられましたが、設定者はありません"という警告を受け取りました。 – cbll