withState
با استفاده از هوک withState
می توانید کامپوننت خود را به استیت سراسری متصل کنید. این هوک دو پارامتر دریافت می کند:
- اولین پارامتر همان کامپوننت ری اکت شما میباشد.
- پارامتر دوم اختیاری است و زمانی استفاده می شود که می خواهید کامپوننت خود را به یک
observer
سفارشی متصل کنید.
در اینجا مثالی از نحوه استفاده از هوک withState
آورده شده است:
import { withState } from 'rosma';
function CountNumbers({ number = 0, setNumber }) {
return <button onClick={() => setNumber(number + 1)}>{number}</button>;
}
export default withState(CountNumbers);
در این مثال، کامپوننت CountNumbers
با هوک withState
به استیت سراسری متصل شده است. پراپ های number
و setNumber
به طور خودکار توسط این هوک در اختیار کامپوننت قرار می گیرند.
اگر نیاز دارید پارامترهای دیگری غیر از مقادیر موجود در استیت را به کامپوننت خود منتقل کنید، می توانید خروجی withState
را در یک متغیر ذخیره کرده و از آن به عنوان کامپوننت React استفاده کنید و مقادیر دلخواه مورد نیاز خود را به عنوان پراپ به آن کامپوننت ارسال کنید.
import { useState } from 'react';
import { withState } from 'rosma';
const ComponentA = withState(({ number = 0, setNumber, strTime }) => (
<div style={{ backgroundColor: '#efefef', padding: '5px' }}>
<p style={{ fontWeight: 'bold' }}>Component A</p>
<button onClick={() => setNumber(number + 1)}>Count is: {number}</button>
<p>Time is: {strTime}</p>
</div>
));
export function ComponentB() {
const [strTime, setStrTime] = useState('');
return (
<>
<ComponentA strTime={strTime} />
<div style={{ backgroundColor: '#e2e2e2', padding: '5px' }}>
<p style={{ fontWeight: 'bold' }}>Component B</p>
<button onClick={() => setStrTime(new Date().toLocaleTimeString())}>
click to update time
</button>
</div>
</>
);
}
Component A
Time is:
Component B
در این مثال، مقدار ComponentA از خروجی هوک withState گرفته شده، همانطور که مشاهده میشود این کامپوننت پراپ اضافی strTime را می پذیرد. همچنین ComponentB در داخل خود ComponentA را رندر کرده و پراپ strTime را به آن ارسال می کند.
observer سفارشی همراه با withState
در این مثال یک observer سفارشی به عنوان پارامتر دوم به هوک withState ارسال شده است :
import { withState, Observer } from 'rosma';
const observer = new Observer({ number: 10 });
export const CountNumber = withState(
({ number, setNumber }) => (
<button onClick={() => setNumber(number + 1)}>Number is :{number}</button>
),
observer
);
در این مثال یک کامپوننت ری اکت با استفاده از هوک withState به یک observer سفارشی که در پارامتر دوم به هوک withState پاس داده شده متصل شده است و خروجی آن در متغیری به نام CountNumber ذخیره و export شده است.
کلید واژه ها: withState, استیت سراسری, هوک, useState, React, مشاهدهگر سفارشی, کامپوننت, پارامتر, پراپ, مقادیر, Observer, CountNumber, setNumber
قبلی: نظارت بر تغییرات استیت