React Js:重新渲染太多。 React 限制渲染次数以防止无限循环

React Js : Too many re-renders. React limits the number of renders to prevent an infinite loop

我正在尝试创建一个具有 -

的功能

2 个文本框 - 1 个用于键,1 个用于值

单击按钮时将保存文本框值的数组。

在列表中显示数组

为此,我在 React Js 中创建了组件 -

import React, { useState } from 'react';

function  HookArray() {
    const[lKey,setKey]=useState('');
    const[lValue,setValue]=useState('');
    const[lKeyValue,setArray]=useState({id:'',value:''});

    const addItem=()=>{
            setArray(...lKeyValue,{lKey,lValue})
    }

    return(
        <div>
            <div id="divArrayList">
                
                <ul>
                    {
                        
                        lKeyValue.map(x=>
                            (
                             <li key={x.id} value={x.value}></li>   
                            ))
                    }
                </ul>
            </div>
            <input id="txtKey" type="text"  onChange={setKey(x=>x.target.value)} ></input>
            <br></br>
            <input id="txtValue" type="text"  onChange={setValue(x=>x.target.value)}></input>
            <br></br>
            <input type="button" onClick="addItem();">Add</input>
        </div>
    )
}
export default HookArray;

但这是在 运行 时间抛出错误 -

Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.

您正在立即调用回调。它们需要以这样的方式定义,以便稍后在 changed/clicked 时调用。传递 onChange 事件对象,以便可以访问该值。对于按钮,您可以简单地附加处理程序,因为事件是无关紧要的。

 <input
   id="txtKey"
   type="text"
   onChange={e => setKey(e.target.value)} // callback accepts event object
 />
 ...
 <input
   id="txtValue"
   type="text"
   onChange={e => setValue(e.target.value)} // callback accepts event object
 />
 ...
 <input
   type="button"
   onClick={addItem} // direct attach addItem callback
 >
   Add
 </input>