我正在尝试做一个浅色/深色的主题。我有两个组件。第一个组件如下所示。我成功地创建了一个布尔值来更改组件中的样式。到目前为止还不错:
js lang-js prettyprint-override">export interface Props{
theme:boolean;
}
const Theme: FC<Props> = ({theme}) => {
const [light,setLightMode]=useState(false);
return (
<div>
<div className="card__theme">
<div className={light ? "card__light" : "card__light--active"}>Light</div>
<Switch inputProps={{ "aria-label": "controlled" }} onChange={()=>setLightMode(!light)}/>
<div className={ light ? "card__Dark" : "card__Dark--active"}>Dark</div>
</div>
</div>
);
};
我现在要做的就是在我的主页上使用这个组件,我想在这里做同样的事情。我想改变我的组件的样式,使2个类名像上面的代码一样具有布尔状态。我面临的问题是,我无法在我的主组件中生成另一个onChange={}函数。首先,我不在接口中发送函数。我想要我的const[light,setLightMode]=useState(false);我的函数onChange={()=
const Home: FC = () => {
const percentage = 91;
const [dark,setDark] = useState(false);
return (
<div>2
<div className="Container-body">
<div className="card">
<div className={dark ? "card__theme" : "card__theme--active"}>
<Theme theme={dark} onChange={()=>{setDark(!dark)}}/>
</div>
所以,让它排序。我只想在我的主组件中使用我的主题组件中的light、setlightTheme布尔状态。我不知道我怎么能用打字稿发送这个道具。。。
这是一个带有我的代码的打印:在这里输入链接描述
所以如果我理解正确的话,你只需要提供一个选项来切换明暗模式。从架构的角度来看,您不希望在组件级别执行此操作,因为多个组件可能需要更改。
在我提出正确的解决方案之前,您目前在这一行中犯了一个BEM错误:
<div className={dark ? 'card__light' : 'card__light--active'}>
修饰符--修饰符
只能与实际元素卡
一起存在。因此,在完全输出的超文本标记语言上,这是有效的card__lightcard__light--active
,但是在您的示例中,要么是card__light
,要么是card__light--active
正在呈现。
当切换一个暗/亮主题时,你要么想通过使用像Redux这样的东西使这个值(真或假)在集中状态下可用,要么你可能想在你的根组件上声明它(通常是
我不建议在这个用例中使用prop-drilling,因为从长远来看,它会使代码变得混乱。这是一个非常好的上下文API用例。
✅参见工作示例Playground。
另外,我使用Typescript来获得更好的代码,你可以忽略你不知道的语法。
React文档中有一个确切的示例,您可以看到文档主题切换。
我不确定我是否理解正确,但我认为您的目标是将onChange函数从父组件传递给主题组件。如果是这样的话,我希望这个片段可以帮助你。基本上,我在接口中添加了onChange参数作为函数。我还将theme参数重命名为dark。为了使这两个组件协同工作,我删除了主题组件中的useState,并使用dark变量(取自父组件)来管理样式。
export interface Props {
dark: boolean;
onChange?: () => void;
}
const Theme: FC<Props> = ({ dark, onChange }) => {
return (
<div>
<div className="card__theme">
<div className={dark ? 'card__light' : 'card__light--active'}>
Light
</div>
<Switch
inputProps={{ 'aria-label': 'controlled' }}
onChange={onChange}
/>
<div className={!dark ? 'card__Dark' : 'card__Dark--active'}>Dark</div>
</div>
</div>
);
};
我在通过C#API中的WebClient发送POST请求时遇到问题。该职位要求如下: 我知道如何处理像用户代理等标题。,但是我对边界有一个问题。我不知道怎么把它们放在哪里...
我有许多元素,大小相同,但颜色不同。因此我创建了一个组件'colors.jsx',其中有以下代码 问题是我得到了这些错误: /src/Colors.jsx:意外标记,应为“,”(6:59) 4函数颜色(props){ 5返回( 6 ^7); 8} 9 4函数颜色(props){ 5返回( 6 ^7); 8} 9 分析错误:意外标记,应为“,” 4函数颜色(props){ 5返回( 6 ^7); 8
我想将我的应用程序入口点用作全局状态存储。将信息作为道具传递给孩子们。 使用react-router 4,如何将prop数据发送到渲染的组件。以类似的方式: 我见过一些旧版本react router的简陋变通方法,这些方法似乎已被弃用。 在v4中这样做的正确方法是什么?
我正在使用React&Material-UI为一个项目中的数据表构建一个带有复选框的筛选选项。我不确定哪种方法是实现这一点的最佳方法。 > 是否有使用Material-UI的自定义解决方案? 如果不是,有什么方法来实现这一点?我是一个新手,所以我很难把所有的碎片放在一起。 这是我得到的东西: 复选框组件: 表组件: 您可以在这里找到一个代码示例。 任何帮助在哪种方式构建这个功能将是真正的感激!
我有下面的代码从消息生成嵌入,它现在可以正常工作。我想要的是,在创建嵌入后,bot应该要求用户提到一个频道,在用户提到一个频道后,bot应该将该嵌入发送到那里。我该怎么做?
问题内容: 是否有用于NodeJS的库,用于发送带有附件的邮件? 问题答案: 是的,这非常简单,我使用nodemailer: 然后阅读文件并发送电子邮件: