sagen, dass ich wie so eine einfache inputfieldcomponent hatte:Mehrere Instanzen einer Komponente sollte nicht Staat teilen
import React, {PropTypes, PureComponent} from 'react';
import {render} from 'react-dom';
import {connect} from 'react-redux';
import updateInput from '../../actions/inputActions';
require('./SimpleInput.sass');
export class SimpleInput extends PureComponent {
constructor(props, context) {
super(props, context);
}
handleChange (event) {
this.props.updateField(event.target.value);
}
renderField() {
return (
<input type="text" value={this.props.value || ''} onChange={this::this.handleChange} placeholder={this.props.initial_value}/>
)
}
render() {
return(
<span>
{this.renderField()}
</span>
)
}
}
const mapStateToProps = (state) => {
return {value: state.value.value}
}
const mapDispatchToProps = (dispatch) => {
return {
updateInput: (value) => dispatch(updateInput(value))
};
};
AddressInput.propTypes = {
initial_value: PropTypes.string
};
AddressInput.defaultProps = {
initial_value: "What's the value?"
};
export default connect(mapStateToProps, mapDispatchToProps)(SimpleInput);
ich dann zwei Instanzen machen:
</SimpleInput initial_value='blah'/>
</SimpleInput>
Wenn dies jedoch gemacht wird, jede Die Aktualisierung auf eines der beiden Felder aktualisiert beide (aufgrund von redux nur für einen einzelnen Zustand).
Was ist der kanonische Weg, um dieses Problem anzugehen?
Legen Sie keinen Status fest, der nicht in Redux geteilt werden soll. Redux sollte für den Status verwendet werden, über den andere Teile der App informiert werden müssen. Wenn Sie dies tun müssen, ordnen Sie jeder Instanz der Komponente eine eindeutige Kennung zu (auch als Übergangszustand bezeichnet). –