reactjs log()在单击时不记录div的id

hivapdat  于 2023-05-06  发布在  React
关注(0)|答案(1)|浏览(69)

我有两个简单的函数(app,generateList)。出现的问题是,每当我从generateList中单击渲染的div时,有时我会得到该div的id的控制台记录值,但大多数时候我会得到一个被记录的空白值。如果我点击一个有另一个id的div,这个id会被记录下来,但是如果我再次点击,这个id不会被记录下来,而是一个空值被记录下来。
为什么会这样?

应用程序功能如下:

[![import React from 'react';
import GenerateList from './generate_list';

function App() {

const \[notes,SetNotes\] = React.useState(\[{id:1,value:""}\]); 

function addNote()
{
  SetNotes(prevItem => {return (\[...prevItem,{id:prevItem\[prevItem.length-1\].id+1,value:""}\])})
}

function clicked(event)
{
  console.log(event.target.id);
}


const list = notes.map(item => {return <GenerateList key={item.id} value={item.id} func={clicked} />});

return (
  <div className='container'>
    <div className='sidebar'>
      <button onClick={addNote} >Add</button>
      {list}
    </div>
  </div>
  );
}

export default App;][1]][1]

生成列表函数如下:

import React from "react"

export default function GenerateList(props)
{
  return(<div  onClick={props.func} className="note_row" id={props.value}>
    <h3>Note {props.value}</h3>
  </div>)
}
0aydgbwb

0aydgbwb1#

看起来<h3>是事件目标,而不是<div>。因此,一个简单的更改可以是添加id

export default function GenerateList(props)
{
  return(<div  onClick={props.func} className="note_row">
    <h3 id={props.value}>Note {props.value}</h3>
  </div>)
}

或者,如果您所需要的只是值,那么您甚至不需要担心事件和目标。只需将值发送到函数:

export default function GenerateList(props)
{
  return(<div  onClick={() => props.func(props.value)} className="note_row">
    <h3>Note {props.value}</h3>
  </div>)
}

并记录发送的值:

function clicked(id)
{
  console.log(id);
}

相关问题