반응형
setState를 다른 구성 요소로 전달하는 방법
리액션 나는 리듀렉스 & 리액션으로 간단한 앱을 만들었어.Action.js 파일에서 State를 설정한 다음 구성 요소에서 사용하려고 하는 것뿐입니다.
문제는 내가 어떻게 해야 할지 모른다는 것이다.errors
에 대해 논하다.catch setState
그리고 나는 이미 레이아웃 컴포넌트에 이렇게 디피케이션을 했다.
this.props.postUsers(this.state.username,this.state.password,this.state.errors)
이것이 setState를 다른 구성요소로 전달하는 올바른 방법인지 모르겠다.
참고: 나는 Reducx-promise-middleware를 사용하고 있는데, 그것은 _PENDING & _FULFULLED & _REVELUMED & _REVENTED _ REVENTED _ REVENTED
src/actions/userActions.js
export function postUsers(username, password, errors) {
let users = {
username,
password,
};
let self = this;
return{
type: "USERS_POST",
payload: axios({
method:'POST',
url: url,
data: users,
contentType: 'application/json',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
})
.then(success => {
console.log('sucesssssssss', success)
})
.catch(({response}) => {
self.setState({errors: response.data});
})
}
}
src/sshd/sshd.js
import React, {Component} from 'react';
import { connect } from 'react-redux';
import {bindActionCreators} from 'redux';
import { postUsers } from '../actions/usersAction';
class Layout extends Component {
constructor(props){
super(props);
this.state = {
username: '',
password: '',
errors: [],
}
}
onUserUpdate(filed, event){
if (filed === 'username') {
this.setState({
username: event.target.value
});
}
if (filed ==='password') {
this.setState({
password: event.target.value
});
}
}
handlePostUsers(e){
e.preventDefault();
this.props.postUsers(this.state.username,this.state.password,this.state.errors)
}
render() {
console.log('this.state.errors',this.state.errors);
return (
<div className="App">
<input name="username" onChange={this.onUserUpdate.bind(this, 'username')}/>
<input name="username" onChange={this.onUserUpdate.bind(this, 'password')}/>
<button onClick={(e) => this.handlePostUsers(e)}>Go ahead</button>
</div>
);
}
}
function mapStateToProps(state) {
return {
act: state.users,
};
}
function matchDispatchToProps(dispatch) {
return bindActionCreators({postUsers}, dispatch)
}
export default connect(mapStateToProps, matchDispatchToProps)(Layout);
src/remitchers/userRimenscers.js
const initalState = {
fetching: false,
fetched: false,
users: [],
error: []
};
export default function(state=initalState, action) {
switch(action.type){
case "USERS_POST_PENDING":{
return {...state, fetching: true,}
}
case "USERS_POST_FULFILLED":{
return {...state, fetching: false,fetched: true, users:[...state.users, action.payload],}
}
case "USERS_POST_REJECTED":{
return {...state, fetching: false, error: action.payload,}
}
default:
return state;
}
}
src/reducers/index.js
import { combineReducers } from 'redux';
import usersReducer from './usersReducer';
import tweetsReducer from './tweetsReducer';
export default combineReducers({
users: usersReducer,
tweets: tweetsReducer,
})
src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { createStore, applyMiddleware } from 'redux'
import thunk from 'redux-thunk';
import logger from 'redux-logger';
import promise from 'redux-promise-middleware';
import reducers from './reducers/index';
import { Provider } from 'react-redux';
import registerServiceWorker from './registerServiceWorker';
import Layout from './components/layout';
const store = createStore(reducers, applyMiddleware(promise(),thunk, logger,loadingBarMiddleware()));
const app = document.getElementById('root');
ReactDOM.render(
<Provider store={store}>
<Layout />
</Provider>
,app);
registerServiceWorker();
구성 요소 외부에서 구성 요소의 상태를 설정할 수 있는지 잘 모르겠어.layout.js에서 userActions.js로 핸들 기능을 전달해야 할 경우
따라서 코드는 다음과 같이 되어야 한다.
src/actions/userActions.js
export function postUsers(username, password, errors, errorFunction) {
let users = {
username,
password,
};
let self = this;
return{
type: "USERS_POST",
payload: axios({
method:'POST',
url: url,
data: users,
contentType: 'application/json',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
})
.then(success => {
console.log('sucesssssssss', success)
})
.catch(({response}) => {
errorFunction(response.data);
})
}
}
src/sshd/sshd.js
...
handlePostUsers(e){
e.preventDefault();
this.props.postUsers(
this.state.username,
this.state.password,
this.state.errors,
(responseData)=>{this.setState({errors: responseData})
});
}
...
참조URL: https://stackoverflow.com/questions/48298605/how-to-pass-setstate-to-another-component
반응형
'Programing' 카테고리의 다른 글
기본 반응:구성 요소 항상 실행 (0) | 2022.04.08 |
---|---|
"유니코드 오류 "유니코드 이스케이프" 코덱이 바이트를 디코딩할 수 없음...Python 3에서 텍스트 파일을 열 수 없음 (0) | 2022.04.08 |
Vue-Router를 사용하여 Vue에서 URL 쿼리 매개 변수를 설정하는 방법 (0) | 2022.04.08 |
고정되지 않고 고정된 개체에서 키를 설정하려고 시도한 경우 (0) | 2022.04.08 |
Python -m Simple에 해당하는 Python 3는 무엇인가?HTTPServer" (0) | 2022.04.08 |