首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for loop react js中进行单独的条件呈现。

在for loop react js中进行单独的条件呈现。
EN

Stack Overflow用户
提问于 2020-04-28 13:21:27
回答 1查看 48关注 0票数 0
代码语言:javascript
复制
const [isAgent, setAgent] = useState(true);

  {isSupervisor.map((value, index) => {

  return <div className="text-gray-700 rounded-lg" key={index}>
    {isAgent ? <div className="flex flex-row">
        <div className=" flex-none text-center">
            <div>Halo</div>
        </div>
        <div className="flex-grow text-gray-700 px-2 py-1 my-auto">
           <button onClick={() => setAgent(true)} className="bg-custom-14 ">Edit</button>
        </div> 
      </div>
    </div>
   </div> : <div>
     <div className="flex flex-col my-2 mx-8">
        <div className=" flex-none text-center">
            <div>Halo</div>
        </div>
          <div className="flex justify-end">
              <button onClick={() => setAgent(false)} className="bg-custom-14">Discard</button>
          </div>
   </div> </div>

问题:当我点击一个条件按钮时,所有的按钮都遵循这个条件,有没有办法让每个按钮都有一个单独的条件?谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-04-28 14:20:28

我写这个答案的假设是,在这个带有按钮的部分列表中,您只需要在单击“编辑”时更改一个部分。由于isAgentsetAgent同时影响所有节,因此您的状态应该有每个节的状态映射,isAgent应该是通过节关键字从此状态检索balue的函数,setAgent应该接受节关键字。因此,您的react状态可能如下所示:

代码语言:javascript
复制
class State {
  editingAgents = {};
  isAgent = (index) => editingAgents[index];
  setAgents = (index, isAgent) => editingAgents[index] = isAgent;
}

修改后的组件代码可能如下所示(注意isAgentsetAgent现在是如何使用的)

代码语言:javascript
复制
const [isAgent, setAgent] = useState(true);

  {isSupervisor.map((value, index) => {

  return <div className="text-gray-700 hover:bg-custom-8 rounded-lg" key={index}>
    {isAgent(index) ? <div className="flex flex-row">
        <div className=" flex-none text-center mx-2 my-1">
            <img src={Ane} className=" w-54px lg:w-50px object-contain"></img>
        </div>
        <div className="flex-grow text-gray-700 px-2 py-1 my-auto">
           <button onClick={() => setAgent(index, true)} className="bg-custom-14 ">Edit</button>
        </div> 
      </div>
    </div>
   </div> : <form onSubmit={handleSubmit(updateAgent)}>
     <div className="flex flex-col my-2 mx-8">
        <div className="m-2 lg:mt-4 hidden">
            <div className="inline-block w-3/12 text-base lg:text-sm font-semibold">Id</div>
        </div>
          <div className="flex justify-end">
              <button onClick={() => setAgent(index, false)} className="bg-custom-14">Discard</button>
          </div>
   </div> </form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61473148

复制
相关文章

相似问题

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