Я пытаюсь отправить данные в API с избыточным хранилищем, но мне трудно понять всю логику.
У меня в ActionCreators есть функция postComment, которая в основном добавляет ответ API в массив комментариев.
export const postComment = (comment) => (dispatch) => {
return fetch(baseUrl + 'testResults', {
method: 'POST',
body: JSON.stringify({
comment:comment
}),
headers: {
'Content-Type': 'application/json',
},
})
.then(response => {
if (response.ok) {
return response;
}
else {
var error = new Error('Error ' + response.status + ': ' + response.statusText);
error.response = response;
throw error;
}
},
error => {
var errmess = new Error(error.message);
throw errmess;
})
.then(response => response.json())
.then(response => dispatch(addComments(response)))
.catch(error => { console.log('Post comments ', error.message);
alert('Your comment could not be posted\nError: '+ error.message); })
}
export const addComments = (comments) => ({
type: ActionTypes.ADD_COMMENTS,
payload: comments
});
У меня есть соответствующие ActionTypes и комментарии.js-файлы в моей папке redux.
Теперь мой вопрос: как мне запустить эту функцию postComment?
Допустим, у меня есть файл CommentComponent, подобный этому
const mapStateToProps = state => {
return{
comments:state.comments
}
}
const mapDispatchToProps = dispatch => ({
postComment: (comment) => dispatch(postComment(comment))
})
class CommentsExample extends Component{
handleSubmit = () => {
}
render() {
return (
<View>
<TextInput
style={{height: 40}}
placeholder="Type your Comment here"
onChangeText={(text) => this.setState({text})}
/>
<Button
title="Submit"
onPress={this.handleSubmit}
/>
</View>
);
}
}
export default connect(mapStateToProps, mapDispatchToProps)(CommentsExample);
Что делать в моей функции handleSubmit?Должен ли mapDispatchToProps быть там?Как мне изменить этот код?Очевидно, я очень смущен.
Любая помощь будет оценена.