Browse Source
fix(ssr): textarea keeps undefined/null values (#11121)
* fix(ssr): textarea keeps undefined/null values
* refactor(ssr): Code review changes for null values in textareas
dev
Daniel Jun Suguimoto
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
21 additions and
2 deletions
-
src/platforms/web/server/modules/dom-props.js
-
test/ssr/ssr-string.spec.js
|
|
@ -2,7 +2,7 @@ |
|
|
|
|
|
|
|
import VNode from 'core/vdom/vnode' |
|
|
|
import { renderAttr } from './attrs' |
|
|
|
import { isDef, isUndef, extend } from 'shared/util' |
|
|
|
import { isDef, isUndef, extend, toString } from 'shared/util' |
|
|
|
import { propsToAttrMap, isRenderableAttr } from '../util' |
|
|
|
|
|
|
|
export default function renderDOMProps (node: VNodeWithData): string { |
|
|
@ -28,7 +28,7 @@ export default function renderDOMProps (node: VNodeWithData): string { |
|
|
|
} else if (key === 'textContent') { |
|
|
|
setText(node, props[key], false) |
|
|
|
} else if (key === 'value' && node.tag === 'textarea') { |
|
|
|
setText(node, props[key], false) |
|
|
|
setText(node, toString(props[key]), false) |
|
|
|
} else { |
|
|
|
// $flow-disable-line (WTF?)
|
|
|
|
const attr = propsToAttrMap[key] || key.toLowerCase() |
|
|
|
|
|
@ -1594,6 +1594,25 @@ describe('SSR: renderToString', () => { |
|
|
|
|
|
|
|
renderToString(vueInstance, err => done(err)) |
|
|
|
}) |
|
|
|
|
|
|
|
it('undefined v-model with textarea', done => { |
|
|
|
renderVmWithOptions({ |
|
|
|
render (h) { |
|
|
|
return h('div', [ |
|
|
|
h('textarea', { |
|
|
|
domProps: { |
|
|
|
value: null |
|
|
|
} |
|
|
|
}) |
|
|
|
]) |
|
|
|
} |
|
|
|
}, result => { |
|
|
|
expect(result).toContain( |
|
|
|
'<div data-server-rendered="true"><textarea></textarea></div>' |
|
|
|
) |
|
|
|
done() |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
function renderVmWithOptions (options, cb) { |
|
|
|