现在有一个Modal子组件,需要父组件控制显示隐藏,同时子组件也可以控制隐藏。
技术描述:
子组件部分代码:
interface DataHelperProps {
visible: boolean;
title: string;
}
const IndexPage: React.FC<DataHelperProps> = ({ visible, title }) => {
const { TabPane } = Tabs;
const { Search } = Input;
const [modelVisible, setModelVisible] = useState(visible);
debugger
console.log(modelVisible);
return (
<Modal
visible={modelVisible}
title={title}
width={900}
>
</Modal>
);
};
export default IndexPage;
父组件点击按钮重新传入 visible
为 true, 子组件并没有显示。
我打印下了 modelVisible
const [modelVisible, setModelVisible] = useState(visible);
debugger
console.log(modelVisible);
发现visible 此时为ture ,界面也重新render了,但是modelVisible 为false。
也就是说useState并没有随着属性的改变重新赋值
监听下属性,当属性改变的时候,重新复制state 。 缺点这样会多刷新一次
useEffect(()=>{
setModelVisible(visible)
},[visible])