javascript - 以 React 方式重新设置父元素的样式
问题描述
当您不控制父元素时,将类添加到父元素的“反应”方式是什么。我正在使用 Material UI 和一个基本上是表格的 XGrid。它负责渲染下面的行和列,所以Row
无论如何我都不能修改(或 wtv)组件。我只能获取诸如 onClick 或 onHover 之类的事件以及包含普通旧 HTML 元素、id 等的对象。
所以当你有一个常规的 HTML 元素并且无法控制 React 渲染函数时,可以接受的样式化方式是什么?我觉得我不允许使用classList.toggle('classname')
. 我什至不了解通过 id 选择元素的反应方式。这甚至允许吗?
解决方案
在 React 中,您不能通过 id 选择元素来设置元素的样式,包括您正在使用的第三方元素。
您主要通过使用props来设置它们的样式。我将给出一些使用 Material UI 库执行此操作的不同方法的示例,但如果您不熟悉 props,则应该阅读文档(https://reactjs.org/docs/components-and-props. html ) 或观看教程。
例如,Material UI 组件有一个名为“classes”的属性,它接受类名。您可以将 classNames 作为“classes”道具传递,然后在 css 中设置 classNames 的样式。
例如,在 React 中:
import Button from '@material-ui/core/Button';
import react from 'react':
<Button classes="buttonStyles"/>
然后在 css 中,根据需要设置类的样式:
.buttonStyles {
color: red;
}
另一种方法是通过设置第三方库为您提供的公共类的样式,并通过传入 props 来触发这些类。
看一下 Material UI 的 CSS API:https ://material-ui.com/api/button/#css
.Mui-disabled
: 如果 disabled={true} 则应用到根元素的伪类。
如果按钮处于禁用状态,此类允许您设置按钮样式。
TL;DR:将类作为道具传递,或样式化库提供给您的公共类。
推荐阅读
- docker - kafka 在池中创建客户,两个 tomcat 平衡
- c# - 创建动态 LambdaExression 时使用 IgonreCase 获取通用方法“包含”
- tensorflow - 如何约束深度神经网络的输出
- arrays - 迭代 api 响应 Ruby on Rails - 带有哈希的数组
- php - 循环遍历 PHP 中的数组
- express - 在 API 上使用 get 时出错(Vue.js、express.js)
- amazon-dynamodb - DynamoDB 忽略了索引的使用
- ios - 呈现 UIAlertController 时 iOS 应用程序崩溃
- javascript - 如何将 Decimal128 值转换为 JavaScript 中的数字?
- jpa - EJB 方法被多次调用