javascript - React - 如何在组件内打印输入 onChange 的值

标签 javascript reactjs

这是我的组件:

export default function ImageUpload({ onSuccess, children}) {

  let value = '';
  const onUpload = async (element) => {
    element = element.target.files;
    let response;
    // Call endpoint to upload the file 
    value = element[0].name;
    return onSuccess(response.url);   
  };

  return <div>
    <div >
      {children}
      <input type="file" id="upload" onChange={onUpload.bind(this)} />
    </div>
    <span>{value}</span>
  </div>; 
}

我想在范围内打印用户选择的文件的名称。 我使用 redux 来表示状态,但是这些信息不属于状态。 这种方法行不通,有人能解释一下为什么吗?

更新 因为看起来没有办法在没有声明的情况下实现这一点,所以我的问题是关于最好的方法: 如果我不需要组件外部的这个值或者使用组件的内部状态但最终同时拥有 Redux 和这个状态,也可以使用 Redux 吗?

最佳答案

我可以考虑改变方法,并将您的组件转换为类类型组件,类似这样:

export default class ImageUpload extends Component {
  constructor() {
    this.state = {
      value: ''
    }
    this.onUpload = this.onUpload.bind(this)
  }

  onUpload() {
    let value = '';
    const onUpload = async (element) => {
      element = element.target.files;
      let response;
      // Call endpoint to upload the file 
      value = element[0].name;
      this.props.onSuccess(response.url);
      this.setState({ value: value })
    };
  }

  render () {
    return <div>
      <div >
        {children}
        <input type="file" id="upload" onChange={this.onUpload} />
      </div>
      <span>{this.state.value}</span>
    </div>;
  }

}

关于javascript - React - 如何在组件内打印输入 onChange 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42349774/

相关文章:

javascript - 如何将变量设置到元素视频的事件中

javascript - React componentWillReceiveProps 不更新状态

javascript - react : Hide menu on all sub pages

javascript - 有什么方法可以使用 React-Intl 访问当前语言环境吗?

authentication - 对 Auth 0's lock.on(' 已验证') 事件调度操作

Javascript 将光标图标更改为本地 icon.jpg

javascript - Combobox React 小部件上的动态默认值

javascript - flask wtf.quick_form 运行一些 javascript 并设置一个表单变量

javascript - React.js : Modeling selection of objects

reactjs - Typescript/React onKeyPress 参数的正确类型是什么?