Skip to content

Commit 5424ef7

Browse files
committed
fix(omi): missing form element value
1 parent af09bd6 commit 5424ef7

File tree

5 files changed

+86
-4
lines changed

5 files changed

+86
-4
lines changed

packages/omi/examples/form.tsx

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { render, tag, Component, h } from '@/index'
2+
3+
@tag('form-demo')
4+
class FormDemo extends Component {
5+
state = {
6+
show: true,
7+
value1: 'volvo',
8+
value2: '',
9+
}
10+
11+
onChange = (evt) => {
12+
this.state.value1 = evt.target.value
13+
this.update()
14+
}
15+
16+
render() {
17+
return (
18+
<div>
19+
{this.state.show && <select id="cars" value={this.state.value1} onChange={this.onChange} name="cars">
20+
<option value="volvo">Volvo</option>
21+
<option value="saab">Saab</option>
22+
<option value="mercedes">Mercedes</option>
23+
<option value="audi">Audi</option>
24+
</select>}
25+
26+
<select id="cars2" value={this.state.value2} name="cars">
27+
<option value="volvo">Volvo</option>
28+
<option value="saab">Saab</option>
29+
<option value="mercedes">Mercedes</option>
30+
<option value="audi">Audi</option>
31+
</select>
32+
33+
<button onClick={(evt) => {
34+
this.state.show = !this.state.show
35+
this.update()
36+
}}>验证this.update后表单状态</button>
37+
</div>
38+
)
39+
}
40+
}
41+
42+
render(<form-demo />, document.body)

packages/omi/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "omi",
3-
"version": "7.3.9",
3+
"version": "7.3.10",
44
"scripts": {
55
"start": "vite",
66
"dev-vite": "vite",

packages/omi/src/dom.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,7 @@ export function setAccessor(
109109
name !== 'type' &&
110110
name !== 'css' &&
111111
!isSvg &&
112-
name in node &&
113-
value !== ''
112+
name in node
114113
) {
115114
//value !== '' fix for selected, disabled, checked with pure element
116115
// Attempt to set a DOM property to the given value.

packages/omi/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ export { Signal } from './signal'
1818
export { css } from './css-tag'
1919
export { mixin } from './options'
2020
export { registerDirective } from './directive'
21-
export const version = '7.3.9'
21+
export const version = '7.3.10'

packages/omi/test/dom.test.jsx

+41
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,47 @@ describe('dom', () => {
7272
expect(parentElement.firstChild.shadowRoot.innerHTML).toBe('<div><span>abc</span></div>')
7373
})
7474

75+
it('form', () => {
76+
class Ele extends Component {
77+
78+
state = {
79+
show: true,
80+
value1: 'volvo',
81+
value2: '',
82+
}
83+
84+
installed() {
85+
this.state.show = false
86+
this.update()
87+
}
88+
89+
render(props) {
90+
return <div>
91+
{this.state.show && <select id="cars" value={this.state.value1} onChange={this.onChange} name="cars">
92+
<option value="volvo">Volvo</option>
93+
<option value="saab">Saab</option>
94+
<option value="mercedes">Mercedes</option>
95+
<option value="audi">Audi</option>
96+
</select>}
97+
98+
<select id="cars2" value={this.state.value2} name="cars">
99+
<option value="volvo">Volvo</option>
100+
<option value="saab">Saab</option>
101+
<option value="mercedes">Mercedes</option>
102+
<option value="audi">Audi</option>
103+
</select>
104+
105+
</div>
106+
}
107+
}
108+
109+
const node = genNode()
110+
define(node.name, Ele)
111+
render(<node.name />, parentElement)
112+
113+
expect(parentElement.firstChild.shadowRoot.querySelector('select').value).toBe('')
114+
})
115+
75116
it('string style', () => {
76117
class Ele extends Component {
77118

0 commit comments

Comments
 (0)