Я в настоящее время разрабатываю приложение Reaction-Redux в первый раз. Я пытаюсь создать компонент, чтобы выбрать размер и передать этот размер в магазин. К сожалению, я понял, что не могу получить доступ к состоянию моего компонента в mapdispatchtoprops. Есть ли другое решение для получения того же результата? Заранее спасибо!
import React from 'react';
import thunk from 'redux-thunk';
import InputLabel from '@material-ui/core/InputLabel';
import MenuItem from '@material-ui/core/MenuItem';
import FormControl from '@material-ui/core/FormControl';
import Select from '@material-ui/core/Select';
import ListItem from '@material-ui/core/ListItem';
import ListItemAvatar from '@material-ui/core/ListItemAvatar';
import ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';
import ListItemText from '@material-ui/core/ListItemText';
import Avatar from '@material-ui/core/Avatar';
import IconButton from '@material-ui/core/IconButton';
import FolderIcon from '@material-ui/icons/Folder';
import DeleteIcon from '@material-ui/icons/Delete';
import styles from './Choixfield.global.scss';
import Button from '@material-ui/core/Button';
//import materiel from './materiel.js';
import { connect } from 'react-redux';
class Choixfield extends React.Component {
constructor(props) {
super(props);
this.props = props;
this.name = this.props.name;
this.partie = this.props.partie;
this.property = this.props.property;
//this.handleClose = this.handleClose.bind(this);
this.handleOpen = this.handleOpen.bind(this);
this.handleChange = this.handleChange.bind(this);
//this.changeGear = this.props.changeGear.bind(this);
this.state = {
isOpen: false,
size: 0
};
}
/*handleClose() {
this.setState(state => {
return {
isOpen: false
};
});
}*/
handleOpen() {
console.log(this.state.size);
this.setState(state => {
return {
isOpen: true
};
});
}
handleChange = (event) => {
console.log("ça change " + event.target.value);
console.log(this.state.size);
this.setState(state => {
return {
property: event.target.value,
isOpen: false
};
});
console.log(this.state.size);
}
render() {
return (
<div id = "cfdiv">
<FormControl>
<InputLabel id="demo-controlled-open-select-label">{this.name}</InputLabel>
<Select
labelId="demo-controlled-open-select-label"
id="demo-controlled-open-select"
open={this.state.isOpen}
onClose={this.props.changeGear}
onOpen={this.handleOpen}
value={this.state.size}
onChange={this.handleChange}
>
<MenuItem value={0}>
<em>None</em>
</MenuItem>
<MenuItem value={109}>Taille 9</MenuItem>
<MenuItem value={110}>Taille 10</MenuItem>
<MenuItem value={111}>Taille 11</MenuItem>
<MenuItem value={112}>Taille 12</MenuItem>
<MenuItem value={113}>Taille 13</MenuItem>
<MenuItem value={114}>Taille 14</MenuItem>
<MenuItem value={115}>Taille 15</MenuItem>
<MenuItem value={116}>Taille 16</MenuItem>
</Select>
</FormControl>
</div>
);
}
}
const mapStateToProps = (state, props) => {
console.log(props);
return{
outils : state.materielList
}
}
const mapDispachToProps = (dispach, ownprops) => {
//console.log(ownprops);
return{
changeGear: () => dispach({type:'CHANGE'})
}
}
export default connect(mapStateToProps, mapDispachToProps) (Choixfield);