ReactJS输入没有得到焦点
ReactJS input does not get focus
下面是父组件(FundLogo)的代码:
var FundLogo = React.createClass({
getInitialState: function() {
return { editing: false, img: "img/xxx.gif" };
},
onClick: function() {
this.setState({ editing: true });
},
onBlur: function(newImg) {
this.setState({ editing: false, img: newImg});
},
render: function() {
return(
<div className="banner_holder adj_height">
{
this.state.editing ?
<FundEditLogoBox onBlur={ this.onBlur } /> :
<img id="fund_logo" src={ this.state.img } onClick={ this.onClick } alt="finvesco logo" />
}
</div>
);
}
});
下面是子组件(funddeditlogobox):
var FundEditLogoBox = React.createClass({
componentDidMount: function() {
this.refs.editLogoBox.getDOMNode().focus();
alert("Focus is on: " + document.activeElement);
},
onBlur: function() {
this.props.onBlur(this.refs.editLogoBox.getDOMNode().value);
},
render: function() {
return (
<div>
<input type="file" onBlur={ this.onBlur } accept="image/*" ref="editLogoBox" />
</div>
);
}
});
基本上是我的代码应该做的:
- 显示容器中的图像
- 当图片被点击时,容器中会显示一个上传按钮,而不是图片。
- 如果您点击上传按钮(输入)外,未选择要上传的图像,则显示之前的图像,而不是上传按钮。
我的问题是,输入(从子组件)没有得到任何焦点时,它被挂载。我必须点击它才能获得焦点。此外,警报显示
"Focus is on: [object HTMLBodyElement]"
我在网上到处寻找类似的问题,但没有任何工作,不像其他问题,它似乎不是一个"重新渲染"的问题…谢谢你的帮助!
这就是你需要的:
render: function() {
return (
<TextInput
ref={function(input) {
if (input != null) {
input.focus();
}
}} />
);
},
https://facebook.github.io/react/docs/more-about-refs.html the-ref-callback-attribute
相关文章:
- 在IE9中的输入字段中输入焦点最近按钮
- Javascript游戏输入失去焦点
- jQuery位置选择器输入样式背景和焦点
- Firefox-当不在输入控件上时隐藏焦点高亮显示
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 焦点输入时保持文本处于选中状态
- 无法在Chrome控制台中使用javascript将焦点和光标设置为输入文本
- 双击对焦点输入
- 捕获没有焦点输入或文本区域的文档级粘贴事件
- JS:焦点输入字符的快捷键
- 重装后的焦点输入
- 加载DOM之前的焦点输入
- 无焦点输入和jquery拖放
- 在IE10中,文本区占位符不会在焦点/输入时消失
- JQuery将焦点事件附加到下一个焦点输入
- Cordova网络应用程序中的焦点输入
- 平板电脑安卓gt7800与扫描仪条形码集成-焦点输入
- 单击链接时焦点输入中的 Keyup 事件
- iOS - 删除带有焦点输入元素的 iFrame 可使光标可见并打开键盘
- Jquery改变焦点输入