如何在 Ionic React 中通过其 onChange 调用传递切换状态?
How do I pass a toggles state with its onChange-call in Ionic React?
说,我有这个开关:
<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 清楚地指出 'value' 不被使用,但 'checked' 是。
上下文代码:
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>
)
}
代码
const [checked, setChecked] = useState(false);
模板
<IonToggle checked={checked}
onIonChange={(e) => setChecked(e.detail.checked)} />
因为你有一个功能组件,你必须使用 useState 钩子来处理你的 darkMode 的状态。在您的 JSX 中,您通过将 isChecked 状态设置为 checked 属性来使用状态来处理 IonToggle(或复选框)。
这是一个如何使用简单的复选框执行此操作的示例:
const { useState } = React;
const DarkModeSwitch = () => {
// here you set the initial state using the
// useState hook:
const [isChecked, setIsChecked] = useState(false);
const darkModeToggle = () => {
// toggle the state 'isChecked'
// this makes it true if false and vice versa
setIsChecked(!isChecked);
}
return (
<div>
<input
type="checkbox"
checked={isChecked}
onChange={() => darkModeToggle()}
/>
</div>
)
}
这是一个工作示例:
Codepen
编辑:
使用你的 context-code 它可能看起来像这样:
import React, { useState } from 'react';
const ExploreContainer: React.FC<ContainerProps> = ({ name }) => {
// here you set the initial state using the useState hook:
const [isChecked, setIsChecked] = useState(false);
const darkModeToggle = () => {
setIsChecked(!isChecked);
}
return (
<IonContent>
<IonList>
<IonItem>
<IonLabel>DarkMode</IonLabel>
<IonToggle id="IonToggleDarkMode" slot="end" checked={isChecked} onChange={() => darkModeToggle())} />
</IonItem>
</IonList>
</IonContent>
)
}
说,我有这个开关:
<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 清楚地指出 'value' 不被使用,但 'checked' 是。
上下文代码:
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>
)
}
代码
const [checked, setChecked] = useState(false);
模板
<IonToggle checked={checked}
onIonChange={(e) => setChecked(e.detail.checked)} />
因为你有一个功能组件,你必须使用 useState 钩子来处理你的 darkMode 的状态。在您的 JSX 中,您通过将 isChecked 状态设置为 checked 属性来使用状态来处理 IonToggle(或复选框)。 这是一个如何使用简单的复选框执行此操作的示例:
const { useState } = React;
const DarkModeSwitch = () => {
// here you set the initial state using the
// useState hook:
const [isChecked, setIsChecked] = useState(false);
const darkModeToggle = () => {
// toggle the state 'isChecked'
// this makes it true if false and vice versa
setIsChecked(!isChecked);
}
return (
<div>
<input
type="checkbox"
checked={isChecked}
onChange={() => darkModeToggle()}
/>
</div>
)
}
这是一个工作示例: Codepen
编辑: 使用你的 context-code 它可能看起来像这样:
import React, { useState } from 'react';
const ExploreContainer: React.FC<ContainerProps> = ({ name }) => {
// here you set the initial state using the useState hook:
const [isChecked, setIsChecked] = useState(false);
const darkModeToggle = () => {
setIsChecked(!isChecked);
}
return (
<IonContent>
<IonList>
<IonItem>
<IonLabel>DarkMode</IonLabel>
<IonToggle id="IonToggleDarkMode" slot="end" checked={isChecked} onChange={() => darkModeToggle())} />
</IonItem>
</IonList>
</IonContent>
)
}