【问题标题】:How to display an icon inside input field which got updated?如何在已更新的输入字段内显示图标?
【发布时间】:2021-03-11 03:25:12
【问题描述】:

我有与对象映射的输入框。

如果输入已更新或任何用户在输入字段中键入内容然后提交,则寻找解决方案,然后该输入字段应在其中显示一个图标(例如,如果有人更新了第一个和最后一个输入字段,而不仅仅是第一个和最后一个字段应包含图标(管理员)其他输入框应保持原样。)

import React, { useState } from "react";
import Admin from 'icons'
//more imports

export default function InputCom() {
  
  const [value, setValue] = useState("");

  const data = [
    { label: "first", name: "first" },
    { label: "last", name: "last" },
    { label: "phone", name: "phone" },
  ];

  const handleChange = (event) => {
    setValue(event.target.value);
  };

const handleClick = () => {
console.log(vlaue)
}
  return (
    <div >
      <Card >
        <div >
          {data.map((item, key) => (
            <div key={key.name} >
              <input
                //icon={Admin}
                label={item.name}
                name={item.name}
                onChange={handleChange}
                placeholder="text"
                value={value}
              />
            </div>
          ))}
        </div>
      </Card>
     <button onClick={handleClick}>submit<button>
    </div>
  );
}


【问题讨论】:

  • 你是什么意思“输入应该显示一个图标”?输入是文本字段。如果您需要一个图标,您可以放置​​一些具有{ showIcon ? &lt;span ...&gt; : null } 或其他内容的模板代码,并通过您的渲染逻辑适当地设置该值。
  • 我已经在输入框中放置了 css 和图标,但我希望如果使用输入框更新值,那么只有特定的输入框应该在其中显示图标。 ` } id={item.name} label={item.name} name={item.name} onChange={handleChange} placeholder="Placeholder" value={value} / > `

标签: javascript reactjs input


【解决方案1】:

您可以创建一个名为InputWithIcon 的组件,它扩展了普通的&lt;input&gt; 标记,但还添加了图标。然后传递可选的 icon 属性,以便它仅在提供图标时呈现:

<InputWithIcon
  icon={!!this.state.value && Admin}
  ...
/>

将图标放在输入的右侧并调整样式,使其看起来好像图标在输入内。

这是伪代码:

const InputWithIcon = ({ icon, ...props }) => {
  return (
    <div>
      <input {...props} />
      {icon && <img src={icon} />}
    </div>
  );
};

样式:

div {
  position: relative;
}

img {
  position: absolute;
  right: 10;
  top: 10;
}

input {
  padding: 10;
  padding-right: 20;
}

希望这能给你一些想法。

【讨论】:

  • 我已经在输入框中放置了 css 和图标,但我希望如果使用输入框更新值,那么只有特定的输入框应该在其中显示图标。 ` } id={item.name} label={item.name} name={item.name} onChange={handleChange} placeholder="Placeholder" value={value} / >`
  • 这就是我在答案顶部所描述的。用输入的值设置状态,只有值不为空时才渲染图标。
  • 通过这样做,我的管理员图标会反映在所有输入字段中,并且在提交这些值后,管理员图标将在页面重新加载后出现(仅在更新的输入字段中)。
  • 如果您希望它在提交这些值后保持,您可以在提交后设置状态。如果您希望它在页面重新加载后工作,您应该全局保存该状态。使用 redux 或 context API 或 localStorage 或 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2021-03-07
相关资源
最近更新 更多