重新渲染时,react组件会重置其状态吗?

时间:2020-06-18 20:54:19

标签: reactjs

我有一个react功能组件,并将我的状态声明为:

<Enter>

当我的一个道具更改时此函数重新呈现时,myState是否会重置为true?

3 个答案:

答案 0 :(得分:1)

状态值在重新渲染后不会自动更改。

在反应中,总是单向转换:

状态更改将触发 render()方法。

渲染方法将不会触发状态更改。

答案 1 :(得分:0)

,状态将保持不变,直到组件卸下。

如果要在卸载时触发某些操作,则可以使用<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>@ViewBag.Title - My ASP.NET Application</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") @Scripts.Render("~/bundles/jquery") </head> <body> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "About", "Home")</li> <li>@Html.ActionLink("Contact", "Contact", "Home")</li> </ul> </div> </div> </div> <div class="container body-content"> @RenderBody() <hr /> <footer> <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p> </footer> </div> @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false) </body> </html> 挂钩。

示例:

useEffect

答案 2 :(得分:0)

例如,当您想将id, title设置为id时,例如titlemyState时,组件必须支撑true。您的组件应该是:

import React, {useState, useEffect} from 'react';

const MyComponent = ({id, title}) => {
  const [myState, setMyState] = useState(true);

  useEffect(()=>{
    setMyState(true);
  },[id, title])

  return (<div>your code</div>)

}