Модальный не отображается onClick

#javascript #html #css #reactjs #reactstrap

#javascript #HTML #css #reactjs #reactstrap

Вопрос:

Я создаю модальный параметр в React, который позволит пользователям добавлять элемент в таблицу. Я создаю компонент RecipeModal с формой внутри, и я не получаю ошибок при компиляции, но при нажатии кнопки ничего не происходит. Я очень внимательно следил за руководством, и у меня закончились идеи. Я видел, что у людей были проблемы с ‘fade’ в React, который делает модальный файл полностью прозрачным и поэтому невидимым, но я попытался проверить «Inspect» (DevTools? Я не уверен, как это называется) для ‘modal’ и не видел его там. Я новичок в веб-разработке, поэтому дайте мне знать, если я должен добавить что-то еще. У меня было больше полей ввода, но я удалил их, пытаясь это исправить.

 import React, { Component } from 'react';
import { Button, Modal, ModalHeader, ModalBody, Form, FormGroup, Label, Input } from 'reactstrap';

import { connect } from 'react-redux';
import { addRecipe } from '../action/recipeActions';

class RecipeModal extends Component {

  state = {
    modal: false,
    recipe_name: '',
    recipe_description: '',
    recipe_ingredients: '',
    recipe_steps: ''
  }
  toggle = (e) => {
    this.setState({
      modal: !this.state.modal
    });
  }
  onChange = (e) => {
    this.setState(
      { [e.target.recipe_name]: e.target.value }
    );
  }

  render() {

    return (
      <div>
        <Button
          color="dark"
          style={{ marginBotton: '2rem' }}
          onClick={this.toggle}
        >Add Recipe</Button>

        <Modal
          isOpen={this.state.Modal}
          toggle={this.toggle} >
          <ModalHeader toggle={this.toggle}>Add a New Recipe</ModalHeader>
          <ModalBody>
            <Form onSubmit={this.onSubmit}>
              <FormGroup>
                <Label for="recipe">Recipe</Label>
                <Input
                  type="text"
                  recipe_name="recipe_name"
                  id="recipe"
                  placeholder="Add recipe name"
                  OnChange={this.onChange} />

              </FormGroup>
            </Form>
          </ModalBody>
        </Modal>
      </div>
    );
  }
}

export default connect()(RecipeModal);
  

Ответ №1:

Состояние чувствительно к регистру. Так что либо вы переименовываете свое modal состояние в Modal

 state = {
  Modal: false,
  ...
};
  

или реорганизуйте isOpen реквизит, чтобы <Modal isOpen={this.state.modal} toggle={this.toggle}>

Я предлагаю последнее.