Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS输入未获得焦点_Javascript_Reactjs - Fatal编程技术网

Javascript ReactJS输入未获得焦点

Javascript ReactJS输入未获得焦点,javascript,reactjs,Javascript,Reactjs,以下是我的父组件(FundLogo)代码: var FundLogo=React.createClass({ getInitialState:函数(){ 返回{编辑:false,img:“img/xxx.gif”}; }, onClick:function(){ this.setState({editing:true}); }, onBlur:函数(newImg){ this.setState({editing:false,img:newImg}); }, render:function(){

以下是我的父组件(FundLogo)代码:

var FundLogo=React.createClass({
getInitialState:函数(){
返回{编辑:false,img:“img/xxx.gif”};
},
onClick:function(){
this.setState({editing:true});
},
onBlur:函数(newImg){
this.setState({editing:false,img:newImg});
},
render:function(){
返回(
{
这是国家编辑吗?
:
}
);
}
});
下面是子组件(FundEditLogoBox)的一个:

var FundEditLogoBox=React.createClass({
componentDidMount:function(){
this.refs.editLogoBox.getDOMNode().focus();
警报(“焦点在:“+document.activeElement”);
},
onBlur:function(){
this.props.onBlur(this.refs.editLogoBox.getDOMNode().value);
},
render:function(){
返回(
);
}
});
基本上我的代码应该做什么:

  • 在容器中显示图像
  • 单击图像时,容器中会显示上载按钮,而不是图像
  • 如果在“上载”按钮(输入)外单击,而未选择要上载的图像,则会显示上一个图像而不是“上载”按钮
  • 我的问题是(来自子组件的)输入在挂载时没有获得任何焦点。我必须点击它来获得焦点。此外,警报显示

    “焦点在:[对象HTMLBodyElement]”

    我在网上到处寻找类似的问题,但没有任何效果,与其他问题不同的是,这似乎不是一个“重新渲染”的问题。。。 谢谢你的帮助

    这就是您需要的:

    render: function() {
        return (
          <TextInput
            ref={function(input) {
              if (input != null) {
                input.focus();
              }
            }} />
        );
      },
    
    render:function(){
    返回(
    );
    },
    
    这就是您需要的:

    render: function() {
        return (
          <TextInput
            ref={function(input) {
              if (input != null) {
                input.focus();
              }
            }} />
        );
      },
    
    render:function(){
    返回(
    );
    },
    

    谢谢你的帮助,弗朗索瓦,但这似乎不是问题所在。事实上,即使该方法被弃用,它也正确地返回了我的输入元素。我尝试了React.findDOMNode,但没有改进。我想我遇到了你的问题。对不起,自动对焦我忘了,但这不是问题所在。我仍然关注身体…使用TextInput我得到“ReferenceError:TextInput未定义”(事实上没有TextInput组件,所以这是一种正常行为)。将TextInput更改为input时,我得到“TypeError:input.focus不是函数”。所以不幸的是,它仍然不起作用。好好阅读文档,试着理解,如果你花时间阅读提供的文档,它完全符合你的需要。在这一点上,除了重写你的整个页面,我没有什么可以为你做的,也许你会找到人去做,但我现在没有时间去做。然而,我认为有了我给你的指导和小小的努力,你就能解决你的问题。希望有帮助。弗朗索瓦,很幸运感谢你的帮助,但这似乎不是问题。事实上,即使该方法被弃用,它也正确地返回了我的输入元素。我尝试了React.findDOMNode,但没有改进。我想我遇到了你的问题。对不起,自动对焦我忘了,但这不是问题所在。我仍然关注身体…使用TextInput我得到“ReferenceError:TextInput未定义”(事实上没有TextInput组件,所以这是一种正常行为)。将TextInput更改为input时,我得到“TypeError:input.focus不是函数”。所以不幸的是,它仍然不起作用。好好阅读文档,试着理解,如果你花时间阅读提供的文档,它完全符合你的需要。在这一点上,除了重写你的整个页面,我没有什么可以为你做的,也许你会找到人去做,但我现在没有时间去做。然而,我认为有了我给你的指导和小小的努力,你就能解决你的问题。希望有帮助。幸运的是,这张照片中还缺少一些东西,我试过了,效果很好,你用的是什么浏览器?这张图片中还缺少其他东西,我试过了,效果很好,你用的是什么浏览器?
    render: function() {
        return (
          <TextInput
            ref={function(input) {
              if (input != null) {
                input.focus();
              }
            }} />
        );
      },