আমি রেডাক্সের পরিবর্তে নতুন রিঅ্যাক্ট কনটেক্সট এপিআই ব্যবহার করে একটি নতুন অ্যাপ্লিকেশন বিকাশ করছি এবং এর আগে Redux
যখন আমাকে ব্যবহারকারীদের একটি তালিকা পাওয়ার দরকার ছিল, আমি কেবল componentDidMount
আমার ক্রিয়ায় ডেকেছি, তবে এখন প্রতিক্রিয়া প্রসঙ্গে, আমার ক্রিয়াগুলি ভিতরে বাস করে আমার গ্রাহক যা আমার রেন্ডার ফাংশনের অভ্যন্তরে রয়েছে, যার অর্থ প্রতিবার যখন আমার রেন্ডার ফাংশনটি বলা হয় তখন এটি আমার ব্যবহারকারীদের তালিকা পেতে আমার ক্রিয়াটি কল করবে এবং এটি ভাল নয় কারণ আমি প্রচুর পরিমাণে অনুরোধ করব।
সুতরাং, আমি কীভাবে কেবলমাত্র একবারে আমার ক্রিয়াকে কল করতে পারি, যেমন componentDidMount
রেন্ডারে কল করার পরিবর্তে?
উদাহরণস্বরূপ, এই কোডটি দেখুন:
ধরা যাক যে আমি আমার সমস্ত Providers
কিছু এই উপাদানগুলিতে গুটিয়ে রেখেছি :
import React from 'react';
import UserProvider from './UserProvider';
import PostProvider from './PostProvider';
export default class Provider extends React.Component {
render(){
return(
<UserProvider>
<PostProvider>
{this.props.children}
</PostProvider>
</UserProvider>
)
}
}
তারপরে আমি আমার সমস্ত অ্যাপ্লিকেশনটি মোড়ানো করে এই সরবরাহকারী উপাদানটি রেখেছি:
import React from 'react';
import Provider from './providers/Provider';
import { Router } from './Router';
export default class App extends React.Component {
render() {
const Component = Router();
return(
<Provider>
<Component />
</Provider>
)
}
}
এখন, উদাহরণস্বরূপ আমার ব্যবহারকারীদের দর্শনটিতে এটি এমন কিছু হবে:
import React from 'react';
import UserContext from '../contexts/UserContext';
export default class Users extends React.Component {
render(){
return(
<UserContext.Consumer>
{({getUsers, users}) => {
getUsers();
return(
<h1>Users</h1>
<ul>
{users.map(user) => (
<li>{user.name}</li>
)}
</ul>
)
}}
</UserContext.Consumer>
)
}
}
আমি যা চাই তা হ'ল:
import React from 'react';
import UserContext from '../contexts/UserContext';
export default class Users extends React.Component {
componentDidMount(){
this.props.getUsers();
}
render(){
return(
<UserContext.Consumer>
{({users}) => {
getUsers();
return(
<h1>Users</h1>
<ul>
{users.map(user) => (
<li>{user.name}</li>
)}
</ul>
)
}}
</UserContext.Consumer>
)
}
}
তবে অবশ্যই যে উপরের উদাহরণটি কাজ করে getUsers
না কারণ আমার ব্যবহারকারীদের মধ্যে প্রপসগুলি দেখা যায় না। এটি আদৌ সম্ভব হলে এটি করার সঠিক উপায় কী?