আমি এস classes ক্লাস ব্যবহার করছি, এবং আমি আমার শীর্ষ রাজ্যের বেশ কয়েকটি জটিল বস্তুর সাথে শেষ করে আমার মূল উপাদানটিকে আরও মডুলার করার চেষ্টা করছিলাম, তাই আমি রাজ্যটিকে শীর্ষাংশে রাখার জন্য একটি সাধারণ শ্রেণির মোড়ক তৈরি করেছি তবে আরও স্থানীয় যুক্তির অনুমতি দিয়েছি ।
মোড়কের ক্লাসটি তার কনস্ট্রাক্টর হিসাবে একটি ফাংশন নেয় যা মূল উপাদান রাষ্ট্রের উপর একটি সম্পত্তি সেট করে।
export default class StateWrapper {
constructor(setState, initialProps = []) {
this.setState = props => {
this.state = {...this.state, ...props}
setState(this.state)
}
this.props = initialProps
}
render() {
return(<div>render() not defined</div>)
}
component = props => {
this.props = {...this.props, ...props}
return this.render()
}
}
তারপরে উপরের রাজ্যের প্রতিটি জটিল সম্পত্তির জন্য, আমি একটি স্টেট র্যাপড ক্লাস তৈরি করি। আপনি এখানে কন্সট্রাক্টরে ডিফল্ট প্রপস সেট করতে পারেন এবং ক্লাসটি শুরু করা হলে সেগুলি সেট করা হবে, আপনি মানগুলির জন্য স্থানীয় রাষ্ট্রটি উল্লেখ করতে পারেন এবং স্থানীয় রাষ্ট্র নির্ধারণ করতে পারেন, স্থানীয় ফাংশনগুলি উল্লেখ করতে পারেন, এবং এটি শৃঙ্খলা পেরিয়ে যেতে পারেন:
class WrappedFoo extends StateWrapper {
constructor(...props) {
super(...props)
this.state = {foo: "bar"}
}
render = () => <div onClick={this.props.onClick||this.onClick}>{this.state.foo}</div>
onClick = () => this.setState({foo: "baz"})
}
সুতরাং আমার শীর্ষ স্তরের উপাদানটির কেবল প্রতিটি শ্রেণিকে এটি শীর্ষ স্তরের রাষ্ট্রীয় সম্পত্তি, একটি সরল রেন্ডার এবং ক্রস-উপাদানকে যোগাযোগ করে এমন কোনও ফাংশন সেট করার জন্য কনস্ট্রাক্টর দরকার।
class TopComponent extends React.Component {
constructor(...props) {
super(...props)
this.foo = new WrappedFoo(
props => this.setState({
fooProps: props
})
)
this.foo2 = new WrappedFoo(
props => this.setState({
foo2Props: props
})
)
this.state = {
fooProps: this.foo.state,
foo2Props: this.foo.state,
}
}
render() {
return(
<div>
<this.foo.component onClick={this.onClickFoo} />
<this.foo2.component />
</div>
)
}
onClickFoo = () => this.foo2.setState({foo: "foo changed foo2!"})
}
আমার উদ্দেশ্যগুলির জন্য বেশ ভালভাবে কাজ করে মনে হচ্ছে, মনে রাখবেন যদিও আপনি শীর্ষ স্তরের উপাদানগুলিতে মোড়ানো উপাদানগুলিতে যে সম্পত্তিগুলি অর্পণ করেছেন তার রাজ্যটি পরিবর্তন করতে পারবেন না কারণ প্রতিটি মোড়ানো উপাদান তার নিজস্ব রাজ্য ট্র্যাক করছে তবে উপরের উপাদানটিতে রাষ্ট্র আপডেট করছে প্রতিটি সময় এটি পরিবর্তন।