আমার 2020 এর (বা 2019) উত্তর
import React, {Component, useRef, useLayoutEffect} from 'react';
import { useDispatch } from 'react-redux';
import { Toast, ToastBody, ToastHeader } from 'reactstrap';
import {WidgetHead} from './WidgetHead';
export const Widget = ({title, toggle, reload, children, width, name}) => {
let myself = useRef(null);
const dispatch = useDispatch();
useLayoutEffect(()=>{
if (myself.current) {
const height = myself.current.clientHeight
dispatch({type:'GRID_WIDGET_HEIGHT', widget:name, height})
}
}, [myself.current, myself.current?myself.current.clientHeight:0])
return (
<Toast innerRef={myself}>
<WidgetHead title={title}
toggle={toggle}
reload={reload} />
<ToastBody>
{children}
</ToastBody>
</Toast>
)
}
এখানে (WidgetHead) কি অনুপস্থিত জন্য আপনার কল্পনা ব্যবহার করার অনুমতি, reactstrapপ্রতিস্থাপন করুন: কোন কিছু যা আপনি npm খুঁজে পেতে পারেন হয় innerRefসঙ্গে refএকটি লিগ্যাসি DOM উপাদান জন্য (ক বলে <div>)।
UseEffect বা UseLayoutEffect
শেষটি পরিবর্তনগুলির জন্য সিঙ্ক্রোনাস হিসাবে বলা হয়
useLayoutEffect(বা useEffect) দ্বিতীয় যুক্তি
দ্বিতীয় আর্গুমেন্ট একটি অ্যারে, এবং প্রথম আর্গুমেন্টে ফাংশনটি সম্পাদন করার আগে এটি পরীক্ষা করা হয়।
আমি ব্যবহার করতাম
[নিজেই কর্নার, নিজেই ক্রোড়ন? নিজেই কর্নার.ক্লিয়েন্টহাইট: ০]
কারণ আমার.কমেন্ট বর্তমান রেন্ডারিংয়ের পূর্বে নাল, এবং এটি যাচাই করা ভাল নয়, শেষের দ্বিতীয় প্যারামিটারটি myself.current.clientHeightআমি পরিবর্তনগুলির জন্য যাচাই করতে চাই।
আমি এখানে কী সমাধান করছি (বা সমাধানের চেষ্টা করছি)
আমি এখানে একটি গ্রিডে উইজেটের সমস্যাটি সমাধান করছি যা তাদের নিজস্ব ইচ্ছায় এর উচ্চতা পরিবর্তন করে এবং গ্রিড সিস্টেমটি প্রতিক্রিয়া জানাতে যথেষ্ট স্থিতিস্থাপক হওয়া উচিত ( https://github.com/STRML/react-grid-layout )।
setStateউচ্চতার মানটিকে একটি রাষ্ট্রের পরিবর্তনশীলকে নির্ধারণ করতে ব্যবহার করতে পারেন ।