Модальное содержимое тела не отображает React, ошибок консоли тоже нет

#reactjs #react-bootstrap

#reactjs #react-bootstrap

Вопрос:

Я пытаюсь отобразить форму внутри модальной, я работал над кнопкой, которая добавляла бы поле ввода, после чего содержимое формы больше не было видно, и у меня тоже нет ошибок консоли, поэтому я понятия не имею, что я сделал не так. Любая помощь будет оценена:

     import {Button, Col, Row, Modal} from 'react-bootstrap';
    import _ from "lodash";

    const DropdownVariableRow = ({
      variableValue,
      modalVariableValues,
      setModalVariableValues,
      id,
    }) => {
      const [value, setValue] = useState(variableValue);
      return (
        <Row key={id} className={"form-group"}>
          <SimpleFormText
            label={<Fragment>Value Name</Fragment>}
            value={value}
            onChange={(newValue) => setValue(newValue)}
            width={{ sm: 4 }}
            formGroupWrapper={false}
          />
          <div className="col-sm-1 text-right" style={{ paddingTop: 30 }}>
            <Button
              bsSize={Size.SMALL}
              bsStyle={State.DANGER}
              onClick={() => removeVariable(scriptVariable)}
            >
              <Icon icon={"fas fa-times"} />
            </Button>
            <Button
              onClick={() =>
                addVariable(value, modalVariableValues, setModalVariableValues)
              }
            >
              Add Value
            </Button>
          </div>
        </Row>
      );
    };
    
    const addVariable = (value, modalVariableValues, setModalVariableValues) => {
      setModalVariableValues(modalVariableValues.concat([value]));
    };

    export default function ScriptVariablesFields({
    model = 'script'
    }) {
const [modalVariableValues, setModalVariableValues] = useState([])
    <Modal show={show} onHide={handleClose}>
      <Modal.Header closeButton>
        <Modal.Title>EDIT DROPDOWN VALUES</Modal.Title>
      </Modal.Header>
      <Modal.Body>
        {_.map(modalVariableValues, (variableValue) => {
          return (
            <DropdownVariableRow
              key={`DropdownVariable${variableValue}`}
              variableValue={variableValue}
              modalVariableValues={modalVariableValues}
              setModalVariableValues={setModalVariableValues}
              id={`DropdownVariableRow${variableValue}id`}
            />
          );
        })}
      </Modal.Body>
      <Modal.Footer>
        <Button onClick={handleSubmit}>Update Values</Button>
      </Modal.Footer>
    </Modal>
}
  

Я все еще новичок в react, поэтому любой, кто может помочь с отладкой, будет очень полезен. Спасибо.

Комментарии:

1. Это из компонентной среды? Откуда Modal , Button , и Row откуда?

2. Где находится ваш Modal компонент? И ваша addVariable функция? Прямо сейчас это бестелесные фрагменты кода, трудно сказать, как это организовано

3. Пожалуйста, предоставьте полный фрагмент кода ваших компонентов.

4. @zero298 и Seth, я импортировал Modal , Button и Row из React , я обновил код, чтобы показать это.

5. Что-нибудь отображается внутри вашего модального. Тело вообще? Если вы добавите <h1>test</h1> вместо вашей карты, это будет отображаться?

Ответ №1:

Если вы не потеряли форматирование при публикации, ваши функции ScriptVariablesFields не работают и не возвращают никаких JSX. Если это причина, забавно, что вы не получаете никаких ошибок. Элементы React всегда должны возвращать JSX

Это должно быть что-то вроде этого:

 export default function ScriptVariablesFields({model = 'script'}) {

   const [modalVariableValues, setModalVariableValues] = useState([]);

   return (
      <Modal show={show} onHide={handleClose}>
         <Modal.Header closeButton>
           <Modal.Title>EDIT DROPDOWN VALUES</Modal.Title>
         </Modal.Header>
         <Modal.Body>
            {_.map(modalVariableValues, (variableValue) => {
              return (
                <DropdownVariableRow
                  key={`DropdownVariable${variableValue}`}
                  variableValue={variableValue}
                  modalVariableValues={modalVariableValues}
                  setModalVariableValues={setModalVariableValues}
                  id={`DropdownVariableRow${variableValue}id`}
                />
              );
            })}
          </Modal.Body>
        <Modal.Footer>
          <Button onClick={handleSubmit}>Update Values</Button>
        </Modal.Footer>
     </Modal>
   )    
}
  

Комментарии:

1. Да, я думаю, что я потерял форматирование при публикации. Когда я удаляю карту в Modal.Body и добавляю слово или что-то еще, это работает. Я изменил несколько вещей, чтобы получить ошибку, например, изменил имена переменных, и я получил ошибку.

2. Полезно знать. Теперь мы изолировали ошибку. Я никогда раньше не использовал Lodash, поэтому мне нужно кое-что узнать об этом, чтобы иметь возможность помочь вам. Не возражаете, если мы сделаем это завтра?