【问题标题】:key is undefined react键未定义反应
【发布时间】:2018-05-20 12:45:36
【问题描述】:

当我在本地主机中播放此代码时,它告诉我“未定义密钥”

import React from 'react';
import PropTypes from 'prop-types'

class LineTable extends React.Component{

supprimerLine = key => {
    const newLines = {...this.state.newLines};
    newLines[key] = null;
    this.setState({newLines})
};
render(){
return(
    <tr>
        <td>{this.props.details.colone1}</td>
        <td>{this.props.details.colone2}</td>
        <td>{this.props.details.colone3}</td>
        <td><button onClick={() => this.props.supprimerLine(key)}>
                                    supprimer</button></td>
    </tr>)};
static propTypes = {
    supprimerLine: PropTypes.func.isRequired};}
export default LineTable

我认为是因为我没有导入密钥但我不知道如何导入它

【问题讨论】:

    标签: reactjs key undefined


    【解决方案1】:

    未定义键是因为在您的函数上下文中不存在。你期望“key”包含什么?

    this.props.supprimerLine(key)
    

    也应该未定义,因为您的方法位于您的类中,而不是您的道具中。

    【讨论】:

    • 当我创建一个新行时,我把 Date.now() 作为一个键
    • 在您的代码中,没有什么能让您的 onClick 函数知道“key”字符串,它将是未定义的。
    【解决方案2】:

    你有两点需要纠正。

    1. supprimerLine 在同一个类LineTable 中定义。

      所以,this.props.supprimerLine(key) 不是正确的调用方式。它会引发错误。

      正确的方法是this.supprimerLine(key)

      在构造函数中添加 this.supprimerLine = this.supprimerLine.bind(this);

    2. 您尚未在当前上下文或类中的任何位置定义key。您需要先定义它。

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 2018-07-06
      • 1970-01-01
      • 2021-09-20
      • 2019-04-27
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多