代码之家  ›  专栏  ›  技术社区  ›  user3142695

如何将事件从组件传递到嵌套函数?

  •  0
  • user3142695  · 技术社区  · 4 年前

    我有两个分开的函数,我需要将一个值从一个传递到另一个,我的操作如下所示。两者有什么区别 const handleClick = icon.onClick(category) const handleClick = () => icon.onClick(category) ?

    event 从组件到 handleClick()

    export const useCategories = () => {
      const handleClick = (category, something) => {
        event.stopPropagation() // <-- 3. How to get event?
        console.log(category, something) // <-- 4. Get every value
      }
    
      return {
        icon: {
          onClick: (category) => handleClick(category, 'anything') // <-- 2. add second var value
        }
      }
    }
    
    export const Categories = () => {
      const { icon } = useCategories()
    
      return (
          <div>
            {categories.map((category) => {
              const handleClick = icon.onClick(category) // <-- 1. pass category value
              return <Icon onClick={handleClick} />)}
            }
          </div>
      )
    }
    
    3 回复  |  直到 4 年前
        1
  •  2
  •   Drew Reese    4 年前

    export const useCategories = () => {
      const handleClick = (event, category, something) => {
        event.stopPropagation();
        console.log(category, something);
      };
    
      return {
        icon: {
          // curried function to receive category and return onClick handler
          onClick: category => event => handleClick(event, category, 'anything'),
        }
      }
    }
    
    export const Categories = () => {
      const { icon } = useCategories();
    
      return (
        <div>
          {categories.map((category, index) => (
            <Icon
              key={index}
              onClick={icon.onClick(category)} // <-- set category
            />
          )
        </div>
      );
    }
    
        2
  •  2
  •   mohammad qavizi    4 年前

    这个 一个事件 处理程序是特定DOM元素的属性,用于管理该元素对事件的反应方式。

    • 事件 一个错误 .

    • 事件 , 来源 行号 ,和 错误 对于 一个错误 事件处理程序。 消息作为字符串。

    调用事件处理程序时,处理程序中的this关键字将设置为注册处理程序的DOM元素。有关详细信息,请参阅,请参阅 the this keyword documentation.

    如果你想看的更多, this

    但是在你的代码里,你需要加上这个

     <Icon onClick={(event) => icon.onClick(event, category, ...rest)} />
    
        3
  •  1
  •   Ramesh Reddy    4 年前

    因为你想通过考试 event category 对于click处理程序,修改传递给的函数 onClick 通过args。

    export const useCategories = () => {
      const handleClick = (event, ...rest) => {
        event.stopPropagation();
        console.log(rest);
      };
    
      return {
        icon: {
          onClick: (event, category) => handleClick(event, category, 'anything'),
        },
      };
    };
    
    export const Categories = () => {
      const { icon } = useCategories();
    
      return (
        <div>
          {categories.map((category) => {
            return <Icon onClick={(event) => icon.onClick(event, category)} />;
          })}
        </div>
      );
    };
    
        4
  •  0
  •   YTG    4 年前
    1. onClick={func}

      当你想传递你使用的参数时

      onClick={() => func(someParmeter)}

    2. 要传递事件,只需编写

      onClick={e => func(e)}