এই মুহুর্তে রেডেক্স শহরে সর্বশেষতম বাচ্চা, রিডেক্স-সাগা / রিডেক্স-সাগা সম্পর্কে প্রচুর আলোচনা রয়েছে । এটি শোনার / প্রেরণ কর্মের জন্য জেনারেটর ফাংশন ব্যবহার করে।
আমি এটির চারপাশে মাথাটি মুড়িয়ে দেওয়ার আগে, আমি redux-saga
যেখানে redux-thunk
অ্যাসিঙ্ক / অপেক্ষায় রয়েছি নীচের পদ্ধতির পরিবর্তে ব্যবহারের উপকারিতা / ধারণাগুলি জানতে চাই।
কোনও উপাদান এই মত দেখতে পারে, স্বাভাবিকের মতো ক্রিয়া প্রেরণ করে।
import { login } from 'redux/auth';
class LoginForm extends Component {
onClick(e) {
e.preventDefault();
const { user, pass } = this.refs;
this.props.dispatch(login(user.value, pass.value));
}
render() {
return (<div>
<input type="text" ref="user" />
<input type="password" ref="pass" />
<button onClick={::this.onClick}>Sign In</button>
</div>);
}
}
export default connect((state) => ({}))(LoginForm);
তারপরে আমার ক্রিয়াকলাপগুলি এরকম কিছু দেখায়:
// auth.js
import request from 'axios';
import { loadUserData } from './user';
// define constants
// define initial state
// export default reducer
export const login = (user, pass) => async (dispatch) => {
try {
dispatch({ type: LOGIN_REQUEST });
let { data } = await request.post('/login', { user, pass });
await dispatch(loadUserData(data.uid));
dispatch({ type: LOGIN_SUCCESS, data });
} catch(error) {
dispatch({ type: LOGIN_ERROR, error });
}
}
// more actions...
// user.js
import request from 'axios';
// define constants
// define initial state
// export default reducer
export const loadUserData = (uid) => async (dispatch) => {
try {
dispatch({ type: USERDATA_REQUEST });
let { data } = await request.get(`/users/${uid}`);
dispatch({ type: USERDATA_SUCCESS, data });
} catch(error) {
dispatch({ type: USERDATA_ERROR, error });
}
}
// more actions...
::
আপনার সামনে this.onClick
Do?
this
), ওরফে আবদ্ধ করার জন্য একটি স্বল্প হাত this.onClick = this.onClick.bind(this)
। লম্বা ফর্মটি সাধারণত কনস্ট্রাক্টারে করার পরামর্শ দেওয়া হয়, কারণ প্রতিটি রেন্ডারে সংক্ষিপ্ত হাতটি আবার বেঁধে রাখে।
bind()
পাস this
করার জন্য অনেকগুলি ব্যবহার করে দেখছি , তবে আমি () => method()
এখনই ব্যবহার শুরু করেছি ।