aka*_*lar 5 javascript ios react-native
我遇到了一个我无法理解的奇怪问题。当我将回调分配给TextInput箭头函数并尝试使事件脱离回调时,ios模拟器开始使用大量CPU,就好像处于无限循环中一样:主线程未被阻塞,但我认为JS线程是。CPU一直高于%100,除非我退出应用程序,否则它不会掉下来。我已经在下面写下了令人反感的代码:
// LoginForm.js
render () {
return <FormItem onFocus={this.onFocus} onBlur={this.onBlur} />
}
Run Code Online (Sandbox Code Playgroud)
部分FormItem组件的渲染方法呈现这样的:
// FormItem.js
render () {
const { onFocus, onBlur } = this.props
<FormInputRow
ref={ref => (this.formInputRef = ref)}
{...{
onFocus,
onBlur,
}}
/>
}
Run Code Online (Sandbox Code Playgroud)
和部分FormInputRow组件的渲染方法是:
// FormInputRow.js
render () {
const { onFocus, onBlur } = this.props
return (
<StyledTextInput
innerRef={ref => (this.textInputRef = ref)}
onFocus={onFocus}
onBlur={onBlur}
/>
)
}
Run Code Online (Sandbox Code Playgroud)
在LoginForm.js没有任何问题,如果onFocus和onBlur是这样定义的:
// LoginForm.js
constructor (props) {
super(props)
this.onFocus = this.onFocus.bind(this)
this.onBlur = this.onBlur.bind(this)
}
onFocus () {
console.tron.log('Focus event')
}
onBlur () {
console.tron.log('Blur event')
}
Run Code Online (Sandbox Code Playgroud)
但是如果函数是使用event参数定义的,则如下所示:
// LoginForm.js
constructor (props) {
super(props)
this.onFocus = this.onFocus.bind(this)
this.onBlur = this.onBlur.bind(this)
}
onFocus (event) {
console.log('Focus event')
console.log(event)
}
onBlur (event) {
console.log('Blur event')
console.log(event)
}
Run Code Online (Sandbox Code Playgroud)
我第一次聚焦时,CPU超过%100 TextInput。是什么原因造成的?
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |