Я новичок в React и Redux, так что это может быть совершенно неправильный способ go о вещах, но я пытаюсь получить обновленное состояние в методе onSubmit
.
Это это простое приложение с карточками, и я хочу получить предложение от пользователя (userInput
) и сравнить его с правильным предложением (generated
). Я могу получить список правильных и неправильных слов на основе их представления (выполненного с помощью действия compareInput()
), который я вижу в состоянии Redux, но он не обновляется до полного запуска метода, поэтому В настоящее время он настроен, начальная длина векторов correct
и wrong
равна 0.
Как я могу получить обновленное состояние в методе? Или есть лучший способ сделать это? Я могу сделать это в componentDidUpdate
, но, так как состояние обновляется с каждым изменением формы, я подумал, что было бы излишними накладными расходами вычислять правильный процент (pctCorrect
) каждого обновления.
Спасибо за тонну !
Input.js
:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import {
compareInput, generateSentence, trackProgress
} from '../../actions/learn';
export class Input extends Component {
state = {
userInput: '',
progress: { submissions: 0, pctCorrect: 1 },
}
onSubmit = e => {
e.preventDefault();
const { sentence } = this.props.sentence;
const { userInput } = this.state;
this.props.compareInput({
'generated': sentence,
'user_input': userInput,
});
this.props.generateSentence();
this.setState({ userInput: '' })
this.props.trackProgress({
progress: {
submissions: this.props.progress.submissions + 1,
pctCorrect: this.props.correct.length / (
this.props.correct.length + this.props.wrong.length
)
},
})
render() { };
const mapStateToProps = state => ({
sentence: state.learnReducer.sentence,
progress: state.learnReducer.progress,
correct: state.learnReducer.correct,
wrong: state.learnReducer.wrong,
})
export default connect(mapStateToProps, {
compareInput, generateSentence, trackProgress
})(Input);