【发布时间】:2021-01-28 01:20:27
【问题描述】:
说,我有这个开关:
<IonToggle id="IonToggleDarkMode" slot="end" checked={vars.darkMode} onChange={darkModeToggle}></IonToggle>
vars.darkMode是toggle的保存值,所以在加载页面时设置状态。
所以,知道我想编写一个调用 onChange 的函数,但我不知道如何在这里传递或访问“checked”属性...
例如,让我们这样做:
function darkModeToggle() {
togglestate = // ???
console.log( togglestate )
}
我该怎么做?
我也读过一些关于onChange={e => darkModeToggle(e)} 的文章,但老实说,我不明白...e 似乎没有将checked 属性传输到任何地方。我考虑过为切换 id 运行一个选择器,然后读取它的值,但 API reference 明确指出不使用“值”,但要使用“检查”。
上下文代码:
import React from 'react';
//other import statements
const { useState } = React;
const DarkModeSwitch = () => {
// here you set the initial state using the useState hook:
const [isChecked, setIsChecked] = useState(false);
const darkModeToggle = () => {
console.log(isChecked);
setIsChecked(!isChecked);
}
}
//other logic, calculations, JS functions, etc
//UI content
const ExploreContainer: React.FC<ContainerProps> = ({ name }) => {
return (
<IonContent>
<IonList>
<IonItem>
<IonLabel>DarkMode</IonLabel>
<IonToggle id="IonToggleDarkMode" slot="end" checked={isChecked} onChange={() => darkModeToggle())} />
</IonItem>
</IonList>
</IonContent>
)
}
【问题讨论】:
-
我也刚刚意识到,当我像这样设置切换状态时,它会永久保持打开状态并且无法切换 [关闭,在这种情况下]。那么,我怎样才能在切换时为切换分配一个选中状态而不破坏它呢?
-
这是在功能组件还是类中? (如果它在功能组件中,则必须使用 React 钩子 useState 并在类中使用函数 setState())。
-
它是一个功能组件。你能给我指出一个方向吗?钩子很可怕......
标签: javascript reactjs react-native ionic-framework ionic-react