【问题标题】:Reactjs -Each child in an array or iterator should have a unique "key" prop [duplicate]Reactjs - 数组或迭代器中的每个孩子都应该有一个唯一的“关键”道具[重复]
【发布时间】:2018-08-31 16:58:43
【问题描述】:
import React from 'react';
import {Jumbotron} from 'react-bootstrap';
import axios from 'axios';
import './App.css'

export default class Form extends React.Component{

state={
    user:[],
    firstname:'',
    lastname:'',
}
handleChange = event => {
    this.setState({firstname:event.target.value});
    this.setState({lastname:event.target.value});
}

handleSubmit = event =>{
    event.preventDefault();

    axios.post('http://9795ca45.ngrok.io/api/Docs',{
        fname:this.state.firstname,
        lname:this.state.lastname
    })
    .then( res => {
        console.log(res);
        console.log(res.data);
    })
    .catch((error) =>{
        alert(error);
    })
}

componentDidMount(){
    axios.get('http://9795ca45.ngrok.io/api/Docs')
    .then(res =>{
        const data=res.data;

        const user = data.data;

        this.setState({user});
    })
    .catch((error) =>{
        alert(error);
    })
}

render(){
    return(
        <div>
            <Jumbotron>
                <form onSubmit={this.handleSubmit}>
                <label>
                    firstName:
                    <input type="text" name="firstname" onChange={this.handleChange} />
                    </label>
                <label>
                    LastName:
                    <input type="text" name="lastname" onChange={this.handleChange} />
                    </label>
                    <button type="submit">add</button>
                    </form>
            
                <h1> names </h1>
                <ul> {this.state.user.map(person => <li> {person.lname}</li>)}</ul>
                </Jumbotron>
                </div>
    )
}
}

我对 reatjs 很陌生 我正在尝试将数据发布到 url 但收到未找到请求 500 错误 我使用调试器看到了这一点

警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。 检查Form的渲染方法。

请帮助我摆脱这个

正在从 url 获取数据 但我无法发布数据

请检查它并用解释纠正我的代码

【问题讨论】:

  • 使用这个:{this.state.user.map((person, i) =&gt; &lt;li key={i}&gt; {person.lname}&lt;/li&gt;)}
  • 点击按钮后出现错误.. 尝试发帖时..
  • 上一个问题是关于获取数据的问题。这次我在发布数据时遇到了问题。
  • 上一个问题?
  • 上一个问题已解决.. 每当我尝试发布时,只会收到请求状态失败 500 错误

标签: reactjs


【解决方案1】:

here所写:

键帮助 React 识别哪些项目已更改、添加或删除。应为数组内的元素赋予键以赋予元素稳定的身份

您需要在地图内渲染的列表中添加一个键。 你的代码应该是这样的:

<ul> {this.state.user.map(person => <li key={person.lname}> {person.lname}</li>)}</ul>

我建议将密钥设置为唯一 ID,而不是姓氏,因为它不是每个人唯一的。

【讨论】:

  • 在这种情况下最好使用索引作为键来保证唯一性。
  • 这条线正在工作并且正在获取数据。
  • 我在发布数据时遇到了问题。每次单击按钮时都会出现未找到请求的错误
  • @Chris 我读到你在任何情况下都不应该使用索引,我错了吗?
  • @SriHariKarthikVijayakumar 这听起来像是一个不同的问题,而不是与此问题相关的问题。检查服务器是否真的在您发送请求的 url 上有一个端点。
猜你喜欢
  • 2016-10-05
  • 2018-02-08
  • 1970-01-01
  • 2017-02-23
  • 2017-02-03
  • 2018-04-29
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多