Javascript 为什么我的onClick在渲染时会激活?

Javascript 为什么我的onClick在渲染时会激活?,javascript,reactjs,events,Javascript,Reactjs,Events,当页面呈现时,onClick会以某种方式激活。为什么? 我怎样才能修好它 import React from 'react'; function Input(props) { return ( <div className={props.on}> <div className="input"> <input placeholder="Ask for help... "/> <button onClic

当页面呈现时,
onClick
会以某种方式激活。为什么? 我怎样才能修好它

import React from 'react';

function Input(props) {
  return (
    <div className={props.on}>
    <div className="input">
        <input placeholder="Ask for help... "/>
        <button onClick={props.setOn("no")}>Send</button>
    </div>
    </div>
  );
}

export default Input;
从“React”导入React;
功能输入(道具){
返回(
邮寄
);
}
导出默认输入;

这是因为您必须在单击时将函数传递给
onClick
这里不是传递函数,而是传递
props.setOn(“no”)
的结果,它是
未定义的。在渲染时会触发函数,因为在渲染时会计算并传递
按钮的
onClick
值,从而执行语句

请尝试以下方法:

<button onClick={() => props.setOn("no")}>Send</button>
props.setOn(“no”)}>Send

这是因为您必须在单击时将函数传递给
onClick
这里不是传递函数,而是传递
props.setOn(“no”)
的结果,它是
未定义的。在渲染时会触发函数,因为在渲染时会计算并传递
按钮的
onClick
值,从而执行语句

请尝试以下方法:

<button onClick={() => props.setOn("no")}>Send</button>
props.setOn(“no”)}>Send

您需要像这样调用click事件
onClick={()=>props.setOn(“no”)}

而不是

 Input(props) {
    return (
      <div className={props.on}>
      <div className="input">
          <input placeholder="Ask for help... "/>
          <button onClick={() => props.setOn("no")}>Send</button>
      </div>
      </div>
    );
  }
输入(道具){
返回(
props.setOn(“no”)}>Send
);
}

您需要像这样调用click事件
onClick={()=>props.setOn(“no”)}

而不是

 Input(props) {
    return (
      <div className={props.on}>
      <div className="input">
          <input placeholder="Ask for help... "/>
          <button onClick={() => props.setOn("no")}>Send</button>
      </div>
      </div>
    );
  }
输入(道具){
返回(
props.setOn(“no”)}>Send
);
}

您正在执行函数并将其返回的内容分配给onClick事件句柄您正在执行函数并将其返回的内容分配给onClick事件句柄谢谢!我通过道具传递了家长的useState,我想在单击按钮时更改它。如何实现它?如果没有完整的代码,很难正确回答,但一种方法是在
Input
上有一个名为like
onSend
的道具,您可以这样将它传递到按钮
Send
。你的父母通过它应该像
setOn(“no”)}>
我发现了这个问题!谢谢你的耐心和时间!非常感谢。我通过道具传递了家长的useState,我想在单击按钮时更改它。如何实现它?如果没有完整的代码,很难正确回答,但一种方法是在
Input
上有一个名为like
onSend
的道具,您可以这样将它传递到按钮
Send
。你的父母通过它应该像
setOn(“no”)}>
我发现了这个问题!谢谢你的耐心和时间!