微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在反应钩子中获取自定义属性的值?

如何解决如何在反应钩子中获取自定义属性的值?

如何使用 React 钩子获取自定义属性的值?

这是代码沙箱中的示例代码demo live

代码

import "./styles.css";
import React,{ useState } from "react";

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

  return (
    <div className="App">
      <h1>Hello CodeSandBox</h1>
      <select
        onChange={(e) => {
          console.log("value",e.target.value);
          console.log("description",e.target.description);
          setValue(e.target.value);
        }}
        name="cars"
        id="cars"
      >
        <option value="volvo" description="hahahahaa">
          Volvo
        </option>
        <option value="saab" description="hehehehehe">
          Saab
        </option>
        <option value="opel" description="hoooooooo">
          Opel
        </option>
        <option value="audi" description="huuuuuuuuuu">
          Audi
        </option>
      </select>
    </div>
  );
}

我可以获取属性值的值,但不能获取自定义描述。 我得到未定义的 console.log("description",e.target.description);

这里出了什么问题?

解决方法

在您的示例中,target<select>,您需要遍历所选选项并获取属性值。

当您可以使用以值作为键的哈希图时,将数据存储在自定义选项属性中似乎不切实际

const Example = () => {
  const [desc,setDesc] = React.useState('')
  
  const descriptions = {
     volvo:'hahahahaa',saab:'hehehehehe',opel:'hoooooooo'
  }
  
  const handleChange = (e)=>{
    const val =  e.target.value,des = descriptions[val]
     console.clear()
     console.log("value",val);
     console.log("description",des);
     setDesc(des)
  }

  return (
    <div>
    <div>Description: {desc}</div>
      <select
    onChange={handleChange}
    name="cars"
    id="cars"
  >
    <option value="volvo">
      Volvo
    </option>
    <option value="saab">
      Saab
    </option>
    <option value="opel" >
      Opel
    </option>  
  </select>
  
    </div>
  );
};

// Render it
ReactDOM.render(
  <Example title="Example using Hooks:" />,document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>

,

e.target 给你选择标签,你可以得到选项标签和这样的描述:

console.log("description",e.target.childNodes[e.target.selectedIndex].getAttribute("description"));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。