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

onChange 事件在移动设备上不起作用

如何解决onChange 事件在移动设备上不起作用

我遇到了一个问题,我实现了一个在 PC 上运行良好但在移动设备上运行良好的搜索网格。我已经尝试过类似问题的其他建议答案,但无济于事。在 PC 上,所有卡片都显示出来,我可以通过简单地输入输入来动态过滤它们。但是,当我在移动设备上尝试时,所有卡片都显示出来,但我无法过滤任何内容。我猜测它与输入中的 onChange 事件有关,但此时我一无所知。我正在使用带有钩子的 Reactjs。任何帮助,将不胜感激。谢谢。

function App() {
  const [postSearch,setPostSearch] = useState({
    title: "",content: "",});

  function dynaSearch(event) {
    const { name,value } = event.target;

    setPostSearch((prevPostSearch) => {
      console.log(prevPostSearch);

      return {
        ...prevPostSearch,[name]: value,};
    });
  }

...

    <form>
      <input
        style={{
          margin: "1rem 0rem 1rem 0rem",border: 0,height: "3rem",borderRadius: "10px 0rem 0rem 10px",}}
        value={postSearch.title}
        name="title"
        type="text"
        placeholder="  Search for a Wiki ...  ?"
        onChange={dynaSearch}
        onTouchEnd={dynaSearch}
      ></input>
      <button
        style={{
          margin: "1rem 0rem 1rem 0rem",height: "3.18rem",width: "4rem",borderRadius: "0rem 10px 10px 0rem",color: "#D4EDF7",backgroundColor: "#4424D6",fontWeight: 800,}}
      >
        Submit
      </button>
    </form>
    <hr></hr>
  </div>

  <div className="post">
    <DataFetching search={postSearch.title} />
  </div>

...

const filteredPosts = posts.filter((post,index) => {
  return post.title.toLowerCase().includes(props.search);
});`

解决方法

我相信它会带外壳。我也遇到过同样令人沮丧的问题(令人沮丧,因为很难发现!)。在移动设备上,设备会自动将您键入的第一个字母大写。在设置为 state 之前尝试将输入设置为小写

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