电抗 Bootstrap 组件开关不工作

rn0zuynd  于 2023-02-06  发布在  Bootstrap
关注(0)|答案(8)|浏览(163)

Bootstrap switches似乎不工作。甚至文档版本也不工作

<Form>
  <Form.Check 
    type="switch"
    id="custom-switch"
    label="Check this switch"
  />
  <Form.Check 
    disabled
    type="switch"
    label="disabled switch"
    id="disabled-custom-switch"
  />
</Form>

irtuqstp

irtuqstp1#

Simple FormCheck很适合我:

<FormCheck 
  id="switchEnabled"
  type="switch"
  checked={this.state.settings.enabled}
  onChange={this.toggleEnabled}
  label="Enable"
/>

关键点是提供id。另一件重要的事情(加载初始值)是使用 checked 属性。

idv4meu8

idv4meu82#

不幸的是,交换机的文档不是最好的。然而,以下内容应该有助于设置交换机以供您使用。

const [isSwitchOn, setIsSwitchOn] = useState(false);

const onSwitchAction = () => {
  setIsSwitchOn(!isSwitchOn);
};

...
<Form>
  <Form.Switch
    onChange={onSwitchAction}
    id="custom-switch"
    label="anything you want to put here"
    checked={isSwitchOn}
    disabled // apply if you want the switch disabled
  />
</Form>
...
pgky5nke

pgky5nke3#

我找到了一个方法。

import React from "react";
import ReactDOM from "react-dom";
import { Container, Form, FormCheck, Button } from "react-bootstrap";

import "./styles.css";
import "bootstrap/dist/css/bootstrap.min.css";

function App() {
  const [swt, setSwt] = React.useState(true);
  const [swt2, setSwt2] = React.useState(true);

  return (
    <Container className="App">
      Aprroch 1
      <FormCheck custom type="switch">
        <FormCheck.Input isInvalid checked={swt} />
        <FormCheck.Label onClick={() => setSwt(!swt)}>
          {`Value is ${swt}`}
        </FormCheck.Label>
      </FormCheck>
      Approch 2
      <Form.Check custom type="switch">
        <Form.Check.Input isInvalid checked={swt2} />
        <Form.Check.Label onClick={() => setSwt2(!swt2)}>
          {`Value is ${swt2}`}
        </Form.Check.Label>
      </Form.Check>
    </Container>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

codeSandbox

suzh9iv8

suzh9iv84#

如果添加custom属性,它将显示切换按钮,但我仍然无法切换开关...

<Form>
  <Form.Check
    custom
    type="switch"
    id="custom-switch"
    label="Check this switch"
  />
</Form>
dba5bblo

dba5bblo5#

我有一个类似的问题,并添加自定义的建议,在另一个答案显示开关正确,但类似的切换现在将工作。
我注意到我指向的是一个旧版本的react-bootstrap,所以将其更改为指向当前版本,当时是v1.0.0-beta.16,这允许切换工作并删除自定义。
因此,如果您遇到以下问题,最好确保您指向的是最新版本的react-bootstrap:React Bootstrap

lb3vh1jj

lb3vh1jj6#

我用了简单的bootstrap类

<div className="form-check form-switch">
    <input className="form-check-input" type="checkbox" id="flexSwitchCheckDefault"/>
    <label className="form-check-label" for="flexSwitchCheckDefault">
           switch checkbox input
    </label>
</div>
v1uwarro

v1uwarro7#

<FormCheck 
  id="switchEnabled1"
  type="switch"
  checked={this.state.settings.enabled}
  onChange={this.toggleEnabled}
  label="Enable"
/>

将交换机的id从switchEnabled更改为switchEnabled1似乎起作用。如果您在多个地方使用交换机,则必须为它使用不同的id。

ecr0jaav

ecr0jaav8#

我认为我们需要像这样使用useState

<Form.Check
  type="switch"
  id="custom-switch"
  label="Email"
  checked={emailChecked}
  onChange = {() => setEmailChecked(!emailChecked)}
  style={{ marginLeft: '20px' }}
/>

相关问题