Ref
tsx
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
console.log(this.h1)
}
render(props) {
return (
<div>
<h1 ref={e => { this.h1 = e }} onClick={this.onClick}>Hello, world!</h1>
</div>
)
}
}
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
console.log(this.h1)
}
render(props) {
return (
<div>
<h1 ref={e => { this.h1 = e }} onClick={this.onClick}>Hello, world!</h1>
</div>
)
}
}
在元素上添加 ref={e => { this.anyNameYouWant = e }}
,然后你就可以 JS 代码里使用 this.anyNameYouWant
访问该元素。你可以使用两种方式来提高 update 的性能:
- 提前赋值
- createRef
提前赋值
tsx
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
console.log(this.h1)
}
myRef = e => { this.h1 = e }
render(props) {
return (
<div>
<h1 ref={this.myRef} onClick={this.onClick}>Hello, world!</h1>
</div>
)
}
}
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
console.log(this.h1)
}
myRef = e => { this.h1 = e }
render(props) {
return (
<div>
<h1 ref={this.myRef} onClick={this.onClick}>Hello, world!</h1>
</div>
)
}
}
createRef
你也可以使用 createRef
来得到更高的性能:
tsx
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
console.log(this.myRef.current) //h1
}
myRef = createRef()
render(props) {
return (
<div>
<h1 ref={this.myRef} onClick={this.onClick}>Hello, world!</h1>
</div>
)
}
}
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
console.log(this.myRef.current) //h1
}
myRef = createRef()
render(props) {
return (
<div>
<h1 ref={this.myRef} onClick={this.onClick}>Hello, world!</h1>
</div>
)
}
}