#reactjs #react-redux
#reactjs #react-redux
Вопрос:
Я создал действие updateChapter
для обновления базы данных. Я импортировал это в свой вызываемый компонент EditChapter
. Когда я регистрировал реквизит для этого компонента, я не вижу updateChapter
действий с этим реквизитом.
Я сопоставил некоторые другие действия из того же Actions.js
файла с каким-либо другим компонентом, и они работают нормально. Я не понимаю этого случая. Вот мой код.
Actions.js
export const updateChapter = formData => dispatch => {
myAxios.post('/updateChapter', formData)
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err)
});
}
Файл компонента
import React from 'react';
import {connect} from 'react-redux';
import {updateChapter} from '../../store/chapterStore/Actions';
const EditChapter = props => {
const {classes} = props;
const [chapterTitle, setChapterTitle] = React.useState('');
const updateChapterHandler = (event) => {
event.preventDefault();
let formState = {
chapter_title: chapterTitle,
}
let formData = appendDataIntoFormData(formState);
props.updateChapter(formData);
}
return (
<div>
<form onSubmit={updateChapterHandler}>
<Grid item xs={12}>
<FormControl
component="fieldset"
fullWidth
margin="normal">
<FormLabel component="legend">
Chapter Title
</FormLabel>
<TextField
required
value={chapterTitle}
onChange={event => setChapterTitle(event.target.value)}/>
</FormControl>
</Grid>
</form>
</div>
);
}
const mapActionToProps = ({
updateChapter
});
export default connect(null, mapActionToProps)(EditChapter);
Комментарии:
1. Не могли бы вы поделиться тем, как вы используете
updateChapter
insideEditChapter
?2. Обновлен вопрос с использованием
updateChapter
3. Я не вижу ничего плохого в коде, но попробуйте перейти
mapActionToProps
с({ updateChapter });
на{ updateChapter };
и посмотреть, работает ли это.4. все еще не работает @usafder
Ответ №1:
Не уверен, но попробуйте с этим:
const mapActionToProps = dispatch => ({
updateChapter: (formData) => dispatch(updateChapter(formData));
});
Комментарии:
1. Это работает, и я принимаю ваш ответ, но можете ли вы объяснить, почему мой код не работал в этой ситуации?
Ответ №2:
Вы используете старый способ сокращения, мое предложение использовать последний способ React Redux братан!!
Комментарии:
1. каков последний способ react redux. можете ли вы предоставить какую-либо ссылку, объясняющую это?
Ответ №3:
Вы можете использовать хуки, это упростит ваш код.
Проверьте документацию https://react-redux.js.org/api/hooks