【问题标题】:Call functional Component on button click in react在按钮单击时调用功能组件
【发布时间】:2019-07-10 01:29:18
【问题描述】:

我有一个功能组件,里面有一个按钮。单击该按钮时,我想调用一个功能组件。

当我们点击提交按钮时,预览按钮出现,当用户点击预览按钮时,预览功能组件被调用。

const Form =(props)=>{

handlePreview=(e)=>{
    e.preventDefault();

    return <Preview/>
  }

return(
<input name="email" type="text"/>
<button type="submit" onClick={props.handleSubmit}>Submit</button><br/>
  {props.render&& 
   <button type="submit" onClick={handlePreview}>Preview</button>
  }

)
}

当我单击提交按钮时,会显示预览按钮,但是当我单击预览按钮时,它不会导航到 &lt;Preview&gt; 功能组件

【问题讨论】:

  • 如果您希望有条件地渲染它们,您应该将您的Preview 组件包含在Form 中,并通过state 进行控制

标签: javascript reactjs


【解决方案1】:

要渲染组件,您应该从函数Form 返回它。如果您从事件处理程序返回任何组件,它将被忽略。

所以要显示&lt;Preview/&gt; 组件,您应该创建本地状态。在功能组件中,可以使用React Hooks 来完成,如下所示

const Form =(props)=>{
    const [isPreviewShown, setPreviewShown] = useState(false);

    handlePreview=(e)=>{
        e.preventDefault();

        setPreviewShown(true); // Here we change state
    }

    return(
        <input name="email" type="text"/>
        <button type="submit" onClick={props.handleSubmit}>Submit</button><br/>
        {props.render&& 
            <button type="submit" onClick={handlePreview}>Preview</button>
        }
        {isPreviewShown && <Preview/>}

    )
}

【讨论】:

  • hooks 分享答案之前,我建议澄清一下 OP 正在使用的 ReactJS 版本,因为许多 ReactJS 项目仍然不支持hooks,以防 OP 想知道为什么你的答案是不工作。 (顺便说一句,我投了赞成票)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 2013-09-16
相关资源
最近更新 更多