#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, поэтому мне нужно кое-что узнать об этом, чтобы иметь возможность помочь вам. Не возражаете, если мы сделаем это завтра?