Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 计算属性未触发v-if块_Vue.js - Fatal编程技术网

Vue.js 计算属性未触发v-if块

Vue.js 计算属性未触发v-if块,vue.js,Vue.js,我是Vue.js的新手,对watch/computed属性感到迷茫。我已经检查了其他答案,但似乎没有一个是有帮助的 我正在构建一个非常基本的身份验证检查机制,在该机制中,我将一个值存储在localStorage中,并检查它以查看是否可以显示组件 我的v-if块如果行为不符合预期,将在重新加载后触发,而不是触发预渲染。我做错了什么 一些内容 一些内容 导出默认值{ 名称:“应用程序”, 计算:{ isAuthenticated:函数(){ if(localStorage.getItem('au

我是Vue.js的新手,对watch/computed属性感到迷茫。我已经检查了其他答案,但似乎没有一个是有帮助的

我正在构建一个非常基本的身份验证检查机制,在该机制中,我将一个值存储在localStorage中,并检查它以查看是否可以显示组件

我的v-if块如果行为不符合预期,将在重新加载后触发,而不是触发预渲染。我做错了什么


一些内容
一些内容

导出默认值{ 名称:“应用程序”, 计算:{ isAuthenticated:函数(){ if(localStorage.getItem('authenticated')='true'){ 返回真值 }否则{ 返回错误 } } }, }
您可以创建一个方法来检查经过身份验证的用户,并在created()或mounted()块中运行该方法。或者您可以使用vuex,这是一个更好的选项

localStorage
不是被动的,因此计算属性的值永远不会从其初始值更改。然后使用方法并运行它预呈现(例如created())应该可以工作,但它不工作,它仍然需要页面刷新是否确实已验证()这真的是真的吗?这样做似乎可以正常工作:@OscarCarballal使用方法可以避免缓存问题,但当
localStorage
的内容更改时,它仍然不会导致组件重新渲染。只有更改反应式数据才能做到这一点。您需要确保当您更改
localStorage
的内容时,它也会更新一些反应性内容,然后让您的模板使用这些内容,而不是直接尝试使用
localStorage
。@Zim是的,它会在正确的时间返回预期值。我也有同样的问题。if块在我重新加载之前不会重新计算。created()应该在渲染之前运行,但由于某些原因,if blocl没有反应。