gpt4 book ai didi

javascript - ReactJS - 如何让 onFocus 和 onBlur 工作

转载 作者:行者123 更新时间:2023-12-03 11:23:04 25 4
gpt4 key购买 nike

据我了解,onFocus点击输入框时应该调用,onBlur当其他东西成为焦点时应该调用。

我的意图:我想调用一个函数,当通过单击激活它时,它将 .concat focuse中输入框的消息字符串,但是我获取不到onFocusonBlur去工作。

从我发现的搜索结果来看,这应该可以解决问题,但不能。

import React, { Component } from 'react'
class SocialPost extends Component {
state = {
message: this.props.socialPost.message,
focus: false
}
_onBlur() {
setTimeout(() => {
if (this.state.focus) {
this.setState({
focus: false,
});
}
}, 0);
}
_onFocus() {
if (!this.state.focus) {
this.setState({
focus: true,
});
}
}
render() {
return (
<div className='...'>
<div className='...'>
...
<input
onFocus={this._onFocus()}
onBlur={this._onBlur()}
type='text'
value={this.state.message}
onChange={...}/>
...
</div>
</div>
)
}
}
export default SocialPost
  • 为什么是 onFocusonBlur在我单击/取消单击它们之前呈现组件时调用它们?
  • 我如何得到这个 onFocusonBlur工作,有没有另一种方法可以专注于激活的输入框?
  • 最佳答案

  • 之所以调用它,是因为您在 render 方法中运行该函数,您应该传递函数,而不是它们返回的内容。

  • 改变这个:
    onFocus={this._onFocus()}
    onBlur={this._onBlur()}

    对此:
    onFocus={this._onFocus}
    onBlur={this._onBlur}

    2.你不能这样声明组件的状态。它必须在构造函数中完成。另外,如果您想引用 SocialPost 的 this你必须绑定(bind)它。 Imo 最好的地方是在构造函数中。
    整个代码应如下所示:
    import React, { Component } from 'react'
    class SocialPost extends Component {
    constructor (props) {
    super(props)
    this.state = {
    message: props.socialPost.message,
    focus: false
    }

    this._onBlur = this._onBlur.bind(this)
    this._onFocus = this._onFocus.bind(this)
    }
    _onBlur() {
    setTimeout(() => {
    if (this.state.focus) {
    this.setState({
    focus: false,
    });
    }
    }, 0);
    }
    _onFocus() {
    if (!this.state.focus) {
    this.setState({
    focus: true,
    });
    }
    }
    render() {
    return (
    <div className='...'>
    <div className='...'>
    ...
    <input
    onFocus={this._onFocus}
    onBlur={this._onBlur}
    type='text'
    value={this.state.message}
    onChange={...}/>
    ...
    </div>
    </div>
    )
    }
    }
    export default SocialPost

    关于javascript - ReactJS - 如何让 onFocus 和 onBlur 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896776/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com