【发布时间】:2021-06-05 00:36:27
【问题描述】:
我是 React 和 Hooks 的新手。我试图在我的组件中实现一个来自react-datepicker 的日期选择器,它带有一个预先确定的输入元素,但我想用 FontAwesome 的图标来更改它,所以我使用了他的custom-input。
这是代码
const Task = () => {
const [startDate, setStartDate] = useState(new Date());
const IconInput = forwardRef(
({ value, onClick }, ref) => (
<FontAwesome icon={faCalendarAlt} className="example-custom-input" onClick={onClick} ref={ref}>
{value}
</FontAwesome>
),
);
return (
<DatePicker
selected={startDate}
onChange={date => setStartDate(date)}
customInput={<IconInput/>}
/>
);
};
代码正在运行,并且从 FontAwesome 更改了图标的输入,但问题是我在控制台中收到了 warning。
这是怎么回事?
我也找到了这个解决方案,但我不知道它是如何工作的。
const Task = () => {
const [startDate, setStartDate] = useState(new Date());
const ref = createRef();
const IconInput = forwardRef(
({ value, onClick }, ref) => (
<FontAwesome icon={faCalendarAlt} className="example-custom-input" onClick={onClick}>
{value}
</FontAwesome>
),
);
return (
<DatePicker
selected={startDate}
onChange={date => setStartDate(date)}
customInput={<IconInput ref={ref}/>}
/>
);
};
我添加了返回createRef() 的ref 变量并放入<IconInput/> 这个ref={ref} 然后从forwardRef() 中删除ref。这不会给我任何警告...但是这是如何工作的?
【问题讨论】:
标签: reactjs react-hooks react-datepicker use-ref