1
MOONLIGHTT 2020-02-23 09:52:56 +08:00
大概率后端传输来的数据为空,也就是`data`为空,前端获取`data.title`属性就会出现这样的报错。d
|
2
redford42 2020-02-23 10:00:11 +08:00
打断点看看数据三
打不来就在调接口那 console 然后看看 network 接口返回得数据是不是没有 title |
3
ycpt2121 2020-02-23 10:06:36 +08:00
“如果在后端把请求文章详情改成不需要登录,这个问题就没有了,刷新之后还是原来的文章。‘这里最后一句什么意思,说清楚点,你可以看看 data.title 是不是必须的,自动动手改改源码
|
4
helloworldchao 2020-02-23 10:07:34 +08:00 via Android
应该是第一次 render 时数据还未获取你直接调用了 title 所属对象,但这个对象还未赋值结果调用了 undefined.title 就报错了。可以在调用 title 的地方对对象先做个判空类似 obj & obj.titile
|
5
afuler OP @ycpt2121 前端可以请求后端的文章详情,这个请求需要先登录。这个需要登录是在后端设置的,如果设置成不需要登录,刷新问题就没有了。
|
6
sumarker 2020-02-23 10:27:02 +08:00
有没有配置 nginx 是不是 nginx 的配置问题
|
7
acthtml 2020-02-23 10:31:06 +08:00
页面和接口 2 个域下不?
|
8
acthtml 2020-02-23 10:31:36 +08:00
我举个例子
1. 页面和接口在不同域下,比如页面 example.com ,接口 api.example.com 2. 登录凭证以 cookie 来保存,存放在接口域下 api.example.com 那么,页面刷新时,服务端渲染会有这个过程: 1. 整个服务请求是在域 example.com 下面的。 2. 服务端渲染时所有异步请求拿到的是 example.com 下的 cookie,也就是拿不到登录凭证。 解决方案是: 1. 前端登录成功之后将登录凭证保存在页面域下面。 2. 异步请求时,将登录凭证通过 http header 形式传送。 |
9
agdhole 2020-02-23 10:35:57 +08:00 via Android
v-if title,或者用最新 es 的语法糖 :title="title ?? null"
|
10
afuler OP 判断了,是 undefined,现在就是似乎刷新之后 cookie 没有传到后端。
|
12
afuler OP @acthtml withCredentials: true 这个原来设置了,但是还是不行,是需要自己手动保存 cookie 到页面域下面吗?
|