Есть несколько способов сделать то, что вы пытаетесь сделать, как уже упоминали другие. Но правильный способ сделать конкретный способ, который вы упомянули, заключается в использовании prevState
, поскольку this.state
ненадежен (потому что он асинхронный).
Вот рабочие примеры:
this.setState((prevState, props) => ({
some: {
...prevState.some,
z: {
...prevState.some.z,
a: 1111
}
}
}))
Отличное объяснение: https://teamtreehouse.com/community/react-docs-now-recomlies-using-function-with -prevstate-inside-of-settate
blockquote>
Я предполагаю, что это не плохое решение для проблемы. Если у Вас был внешний файл таблицы стилей, эта часть кода сделает работу:
HtmlLink cssRef = new HtmlLink();
cssRef.Href = "styles/main.css";
cssRef.Attributes["rel"] = "stylesheet";
cssRef.Attributes["type"] = "text/css";
Page.Header.Controls.Add(cssRef);
Другая идея состоит в том, чтобы записать Ваш собственный ASP.NET ServerControl "HtmlInlineStyle", таким образом, Вы могли назвать это этим путем (теги script будут сделаны Вашим управлением сервером):
Page.Header.Controls.Add(
New HtmlInlineStyle(".xyz { width:300px;padding-left:10px }");
Эта запись в блоге и комментарии показывают некоторые альтернативы (ScriptManager. RegisterClientScriptBlock). Но по-моему Ваше решение хорошо.
Вот иначе... Например:
Родительская часть ASPX:
<div id="div1" class="xyz" style="width: 40px; height: 40px;">
<span>abc</span>
</div>
В рамках управления:
Dim xyzStyle As New Style()
xyzStyle.CssClass = "xyz"
xyzStyle.BackColor = Drawing.Color.LightBlue
Page.Header.StyleSheet.CreateStyleRule(xyzStyle, Nothing, ".xyz")
Обратите внимание, что это предполагает, что родительская страница ASPX имеет набор атрибута класса для целевого управления. В противном случае затем необходимо будет объединить стиль с управлением с помощью метода MergeStyle. (Это требует, чтобы управление было runat="server"
).
Этот код представляет следующий вывод: (Показ всего источника для Вашего удобства)
<html>
<head>
<title>Untitled Page </title>
<style type="text/css">
.xyz { background-color:LightBlue; }
</style>
</head>
<body>
<form name="form1" method="post" action="MyPage.aspx" id="form1">
<div id="div1" class="xyz" style="width: 40px; height: 40px;">
<span>abc</span>
</div>
</form>
</body>
</html>