首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为currentTarget返回的event.currentTarget.name

作为currentTarget返回的event.currentTarget.name
EN

Stack Overflow用户
提问于 2019-01-24 13:57:40
回答 4查看 3.5K关注 0票数 2

我在typescript中有一个handleChange函数,我在另一个函数中调用该函数将文本字段中的更改值发送到mobx树。但是,当我设置const { name } = event.currentTarget并稍后将其记录到函数中时,name变量返回为'currentTarget‘,而不是我在renderHexTextField函数中分配的name属性,并且该值未定义。

我通过调用renderHexTextField函数呈现了许多不同的文本字段,该函数接受两个参数。第一个是

如果它按照预期工作,那么name变量将等于我的return语句中的'hoverFontColor‘字符串,然后该字符串将作为css对象的键传递给handleChange,而value将操纵mobx状态树。

如有任何帮助,我们不胜感激!

编辑**我忘记提到TextField组件是一个MaterialUI component

解决方案编辑** --我的handleChange被绑定到去抖动。我必须更新我的onChange组件属性,以便在this.handleChange之前运行event.persist()。谢谢你们,Praveen和Chris!

代码语言:javascript
复制
return (
   this.renderHexTextField(css.hoverFontColor, 'hoverFontColor')
)


  private renderHexTextField(input: string, name: string) {
    // name parameter used to specify which state in handleChange function
    if (name === 'fontType' || this._throwHexErr(input) === 'True') {
      // If hex format is correct, render normal text field
      return (
        <TextField
          required={true}
          id="standard-required"
          margin="normal"
          name={name}
          placeholder={input}
          onChange={this.handleChange}
        />
      )
    } else {
      // else render error text field
      return (
        <TextField
          error={true}
          id="standard-error"
          margin="normal"
          name={name}
          placeholder={input}
          onChange={this.handleChange}
        />
      )
    }
  }

  private handleChange = (event: React.ChangeEvent<HTMLInputElement>): void => {
    const { name, value } = event.currentTarget
    const { store } = this.props
    const currentBot = store.bots.current
    if (currentBot) {
      const id = currentBot._id
      const css: any = toJS(currentBot.theme.css)
      log('css obj >> ', css)
      if (css) {
        css[name] = value
        log('handleChange >>> ', name, value, css)
        currentBot.patchCSS(id, css)
      }
    } else {
      log('No current bot in handleChange')
    }
  }

  private _validateHex(hexcode: string, regex: any) {
    // Regex Testing Function
    log('validating hex')
    return regex.test(hexcode)
  }

  private _throwHexErr(userInput: string) {
    // Return True or Error depending on result of Regex Test
    const regex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/
    if (this._validateHex(userInput, regex)) {
      return 'True'
    } else {
      return 'Error'
    }
  }
EN

回答 4

Stack Overflow用户

发布于 2019-01-24 14:14:42

我认为你需要改变

代码语言:javascript
复制
const { name, value } = event.currentTarget

代码语言:javascript
复制
const { name, value } = event.target

代码语言:javascript
复制
const name = event.target.name;
const value = event.target.value;

这应该可以很好地工作

代码语言:javascript
复制
private handleChange = (event: any): void => {
    const name = event.target.name;
    const value = event.target.value;
    const { store } = this.props
    const currentBot = store.bots.current
    if (currentBot) {
      const id = currentBot._id
      const css: any = toJS(currentBot.theme.css)
      log('css obj >> ', css)
      if (css) {
        css[name] = value
        log('handleChange >>> ', name, value, css)
        currentBot.patchCSS(id, css)
      }
    } else {
      log('No current bot in handleChange')
    }
  }

另外,也要做

代码语言:javascript
复制
<TextField
          error={true}
          id="standard-error"
          margin="normal"
          name={name}
          placeholder={input}
          onChange={(event) => this.handleChange(event)}
        />
票数 1
EN

Stack Overflow用户

发布于 2019-01-24 14:19:44

我最近也遇到了同样的问题,我用了React.FormEvent<HtmlInputElement>。这给了我来自界面的event.currentTarget.name。这有帮助吗?

因此,为了详细说明,尝试将React.ChangeEvent<HTMLInputElement>更改为React.FormEvent<HtmlInputElement>

票数 1
EN

Stack Overflow用户

发布于 2019-01-25 02:38:03

请参阅上面的我的解决方案编辑。我的handleChange函数被绑定到一个去反跳函数,所以我必须在onChange属性中包含event.persist()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54340192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档