Мне нужно создать React Component с действием Redux и редуктором для обработки выбора из выпадающего списка.Нечто похожее на действие UPDATE_NUMBER_OF_DROPDOWNS
, которое будет выступать в качестве прослушивателя в раскрывающемся списке для запуска потока действия / редуктора.Текущий макет будет одним выпадающим списком с набором параметров для 0, 1, 5 и 13, и в зависимости от того, какое число пользователь выберет, будет заполнено столько строк с собственными выпадающими полями.Поэтому, если пользователь выбирает 5, появится дополнительный раздел с 5 строками полей, называемых «Обоснование», каждое из которых имеет собственный выпадающий список со списком поднабора параметров.Я новичок в Redux, поэтому я пытаюсь определить, как это сделать, но я думаю, что мне нужно, я включил базовое состояние моего компонента React ниже Select Form Component
import React from 'react'
import styled from 'styled-components'
import { Col, Row, Collapse } from 'antd'
import Checkbox from '../elements/Checkbox'
import icon from '../../assets/caretDown.svg'
import Button from '../elements/Button'
const { Panel } = Collapse
const ConfigurationOptions = () => (
<Container>
<Row>
<Col span={12}>
<StyledCollapse>
<Panel
header="Configure Form"
key="1"
>
<div>
<Row>
<Col span={12}>
<p>Form Fields</p>
</Col>
<Col span={12}>
<CustomSelect>
<option>none</option>
<option>5 Form Fields</option>
<option>10 Form Fields</option>
<option>13 Form Fields</option>
</CustomSelect>
</Col>
</Row>
<div>
<StyledH1>Form Field Justification</StyledH1>
<Row>
<Col
span={8}
offset={16}
>
<ButtonContainer>
<Button
type="primary"
Apply to all
</Button>
</ButtonContainer>
</Col>
</Row>
<br />
<Row>
<Col span={12}>Field #1</Col>
<Col span={12}>
<CustomSelect>
<option>Select Justification</option>
</CustomSelect>
</Col>
</Row>
</div>
</div>
</Panel>
</StyledCollapse>
</Col>
</Row>
</Container>
)
const Container = styled.div`
text-align: left;
`
const StyledH1 = styled.h1`
font-weight: 700;
`
const CustomSelect = styled.select`
padding: 5px 45px 5px 10px;
font-size: 0.75rem;
line-height: 1.4rem;
font-weight: 500;
color: black;
border: 2px solid black;
height: 30px;
width: 75%;
background-color: ${({ theme }) => theme.colors.white};
border-radius: 0;
appearance: none;
background-image: url(${icon});
background-repeat: no-repeat;
background-position: right 8px center;
`
const ButtonContainer = styled.div`
display: flex;
align-items: baseline;
`
// Use for Show/Hide link
/* <Button type="link">APPLY TO ALL</Button> */
export default ConfigurationOptions