Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked fromvuejs/vue

Commit33e669b

Browse files
sqalyyx990803
authored andcommitted
fix(ssr): computed properties should pass vm as first argument in ssr (vuejs#9090)
fixvuejs#8977
1 parentf43ae6d commit33e669b

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

‎src/core/instance/state.js‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,13 @@ export function defineComputed (
216216
if(typeofuserDef==='function'){
217217
sharedPropertyDefinition.get=shouldCache
218218
?createComputedGetter(key)
219-
:userDef
219+
:createGetterInvoker(userDef)
220220
sharedPropertyDefinition.set=noop
221221
}else{
222222
sharedPropertyDefinition.get=userDef.get
223223
?shouldCache&&userDef.cache!==false
224224
?createComputedGetter(key)
225-
:userDef.get
225+
:createGetterInvoker(userDef.get)
226226
:noop
227227
sharedPropertyDefinition.set=userDef.set||noop
228228
}
@@ -253,6 +253,12 @@ function createComputedGetter (key) {
253253
}
254254
}
255255

256+
functioncreateGetterInvoker(fn){
257+
returnfunctioncomputedGetter(){
258+
returnfn.call(this,this)
259+
}
260+
}
261+
256262
functioninitMethods(vm:Component,methods:Object){
257263
constprops=vm.$options.props
258264
for(constkeyinmethods){

‎test/ssr/ssr-string.spec.js‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,24 @@ describe('SSR: renderToString', () => {
10761076
})
10771077
})
10781078

1079+
// #8977
1080+
it('should call computed properties with vm as first argument',done=>{
1081+
renderToString(newVue({
1082+
data:{
1083+
firstName:'Evan',
1084+
lastName:'You'
1085+
},
1086+
computed:{
1087+
fullName:({ firstName, lastName})=>`${firstName}${lastName}`,
1088+
},
1089+
template:'<div>{{ fullName }}</div>',
1090+
}),(err,result)=>{
1091+
expect(err).toBeNull()
1092+
expect(result).toContain('<div data-server-rendered="true">Evan You</div>')
1093+
done()
1094+
})
1095+
})
1096+
10791097
it('return Promise',done=>{
10801098
renderToString(newVue({
10811099
template:`<div>{{ foo }}</div>`,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp