Попытка показать элемент массива реакции select в элементе списка другого класса - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в реагировании, поэтому мне может чего-то не хватать

Я использую response-select для хранения нескольких элементов и использую функцию карты для отображения элементов, которая работает нормально. Но когда я использую тот же элемент в другом классе для отображения в элементе списка, он показывает пустой.

Вот код, в котором я показываю несколько вариантов.

const Departments = [
  { label: "OneIT", value: "OneIT" },
  { label: "HR", value: "HR" },
  { label: "Vigilance", value: "Vigilance" },
  { label: "Ethics", value: "Ethics" },
  { label: "Corporate Services", value: "Corporate Services" },
  { label: "Legal", value: "Legal" },
  { label: "Sports", value: "Sports" },
  { label: "TQM", value: "TQM" },
  { label: "Iron Making", value: "Iron Making" },
  { label: "TMH", value: "TMH" },
];

class MultiSelect2 extends Component {
  state = {
    selectedOptions: [],
  };
  handleChangeField = (selectedOptions) => {
    this.setState({ selectedOptions });
  };
  render() {
    const { selectedOption } = this.state;
    return (
      <div className="container">
        <div className="row">
          <div className="col-md-2"></div>
          <div className="col-md-8">
            <span>Select Department</span>
            <Select
              value={selectedOption}
              options={Departments}
              onChange={this.handleChangeField}
              isMulti
            />
            {this.state.selectedOptions.map((o) => (
              <p>{o.value}</p>
            ))}
          </div>
          <div className="col-md-4"></div>
        </div>
      </div>
    );
  }
}

I Я пытаюсь отобразить это в другом классе в элементе списка, но он не отображается.

export class Confirm extends Component {
  state = {
    selectedOptions: [],
  };

  render() {
    const {
      values: { selectedOptions },
    } = this.props;
    return (
      <List>
        <ListItemText primary="Departments" secondary={selectedOptions} />
      </List>
    );
  }
}

Я знаю, что мне может не хватать чего-то очень простого c, но, пожалуйста, помогите

1 Ответ

0 голосов
/ 19 июня 2020

@ Kubwimana Adrien

Вот остальной код:

export class Confirm extends Component {
  state = {
    rows: [],
    idx: [],
    selectedOptions: []
  };

  continue = e => {
    e.preventDefault();
    //Process Form//
    this.props.nextStep();
  };

  back = e => {
    e.preventDefault();
    this.props.prevStep();
  };

  render() {
    const {
      values: {
        Title,
        Details,
        What,
        Why,
        How,
        Status,
        Cost,
        Benefits,
        Kpi_Before,
        Kpi_After,
        Time,
        dateTime,
        Base_Before,
        Target_Before,
        UOM_Before,
        idx,
        selectedOptions
      }
    } = this.props;

    return (
      <MuiThemeProvider theme={theme}>
        <React.Fragment>
          <div className={useStyles.root}>
            <AppBar position="static">
              <Toolbar>
                <Typography
                  gutterBottom
                  align="center"
                  style={{ width: "100%", alignItems: "center" }}
                >
                  Confirm Information
                </Typography>
              </Toolbar>
            </AppBar>
          </div>

          <br />
          <h3>Are you sure to continue and confirm your information?</h3>
          <List>
            <ListItemText primary="Departments" secondary={selectedOptions} />
            <ListItemText primary="Title" secondary={Title} />
            <ListItemText primary="Kpi_Before" secondary={Kpi_Before} />
          </List>
         <p> {this.state.selectedOptions.map(o => (
            <p>{o.value}</p>
          ))}</p>
          <br />
          <Button
            variant="contained"
            color="primary"
            style={styles.button}
            onClick={this.continue}
          >
            Confirm & Continue
          </Button>
          <Button
            variant="contained"
            color="default"
            style={styles.button}
            onClick={this.back}
          >
            Back
          </Button>
        </React.Fragment>
      </MuiThemeProvider>
    );
  }
}

const theme = createMuiTheme({
  palette: {
    primary: blue,
    secondary: purple
  },
  status: {
    danger: "orange"
  }
});
const styles = {
  button: {
    margin: 15
  }
};

export default Confirm;
...