javascript - 重新渲染组件以再次获取默认道具
问题描述
我正在使用包react-calendar我将对其进行自定义以仅选择月份,例如 2020-02 或 2020-05 ,...而且它应该首先隐藏并在我单击按钮(图标)时显示。所以我写了一个组件来切换它,命名为 Dropdown ,另外我设置了日历的视图属性以显示一年中的月份,当我点击一个月时,隐藏状态会改变,下拉菜单将关闭并选择一个月。
但是问题是当我想再次单击按钮选择另一个月份时,日历从天而不是月视图开始,因为在选择月份后它会选择天。实际上它需要重新渲染或再次设置“年份”到它的视图道具。
有没有办法在状态改变时重新渲染日历组件。
导入部分:
import ReactCalendar from "react-calendar";
状态部分:
const [hide, sethide] = useState(false);
返回部分:
<Dropdown
forceHide={hide}
onChangeShow={() => sethide(false)}
toggle={
<Icon name="calendar" size={32} />
}
>
<ReactCalendar
view={'year'}
onClickMonth={value => {
console.log("value", value);
sethide(true);
}}
/>
</Dropdown>
任何帮助表示赞赏。
解决方案
我以这种方式解决了我的问题,但如果您有任何想法,请与我分享,我不确定这是一个优化的解决方案。
我定义了一个函数来在每次渲染发生时克隆它:
const RenderReactCalendar = ({view})=>{
let Render = (
<ReactCalendar
onClickMonth={value => {
console.log("value", value);
sethide(true);
}} />
);
return React.cloneElement(Render, { view }, {});
};
然后重构我的组件:
<Dropdown
forceHide={hide}
onChangeShow={() => sethide(false)}
toggle={
<Icon name="calendar" size={32} />
}
>
<RenderReactCalendar
view={'year'}
/>
</Dropdown>
推荐阅读
- node.js - Ember 服务器:“端口 4200 已在使用中”,当 4200 上没有进程运行时
- php - 动态更改 json 键名
- javascript - AWS lambda:“模块‘exports’上缺少处理程序‘handle’”
- python - 散景没有用 SQL 数据解释正确的比例
- r - R ggplot2 - 仅为 x 轴的一部分添加功能区
- c# - 将多个模型组合成 1 个 JSON WebAPI 响应
- excel - 通过 Excel 的 eDrawings API
- java - java比较器按多个字段排序
- amazon-web-services - API 网关的“导出为 Swagger”和“导出为 Swagger + Postman”缺少“参数”对象
- node.js - 错误:没有 HttpClient 的提供者!角度错误信息