javascript - react 引用值为空

标签 javascript reactjs

我有一个带有不受控制的输入元素的 react 组件,如下所示:

class TestComponent {

onAddTypeClicked = el => {
    console.log(el);
    console.log(el.value);
};


render() {
    return (
        <div>
            <input
                name="asset_types"
                ref={el => this.assetTypesAdd = el}
            />
            <button
                type="button"
                onClick={e => this.onAddTypeClicked(this.assetTypesAdd)}
            />   
        </div>
    );
}

现在,当我在输入字段中输入一些值并单击按钮时,输入会正确打印,但其值为空。如果我使用 document.getElementById 方法,效果很好。如果我做错了什么,有人可以指出吗?

最佳答案

我相信您的代码工作正常,并且 this.assetTypesAdd.value 中的可访问值与其打印值相同。我不确定您在哪里获得输入的空值。

// Example class component
class MyComponent extends React.Component {

  onAddTypeClicked = el => {
      console.log(el.value);
      this.forceUpdate();
  };

  render() {
    return (
        <div>
            <input
                name="asset_types"
                ref={el => this.assetTypesAdd = el}
            />
            <button
                type="button"
                onClick={e => this.onAddTypeClicked(this.assetTypesAdd)}
            >
                Click me
            </button>
            {this.assetTypesAdd && 
                <div>Value of input: {this.assetTypesAdd.value}</div>}
            
        </div>
    );
  }
}

// Render it
ReactDOM.render(
  <MyComponent/>,
  document.getElementById("react")
);
button {
    width: 100px;
    height: 20px;
    display: block;
    margin: 10px 0;
}
<div id="react"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

关于javascript - react 引用值为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53423927/

相关文章:

javascript - 使用 React 在一页中登录并注册

reactjs - 如何在成帧器运动中对背景图像进行动画处理?

javascript - 如何在 Javascript/jQuery 中使用 if 语句和 .each() 循环一一删除类?

javascript - 垂直滚动时水平滚动?

javascript - Angular 教程不适用于 fiddle

如果用户在 native react 构建的应用程序上隐藏了较低的硬件导航栏,则 Android 屏幕不适合

css - 使用 NavBar 组件时 id 和 class 的区别?

javascript - 如何沿着多线图表中的线打开和关闭数据点

javascript - Jest/Enzyme - TypeError : div. 查找不是函数

javascript - 类型错误 : Cannot read property 'map' of undefined when parsing JSON