使用useRef类型脚本

时间:2019-11-19 04:40:40

标签: reactjs lottie

容器在抱怨,因为HTMLDivElement |无法将null分配给元素类型

export const Loader: React.FC = () => {
  const element = useRef<HTMLDivElement>(null);  
  useLayoutEffect(() => {
    lottie.loadAnimation({
      animationData,
      container: element.current,
      loop: true
    });
  });

  return (
    <Wrapper>
      <div ref={element}></div>
    </Wrapper>
  );
};```

1 个答案:

答案 0 :(得分:0)

在调用element.current之前,必须确保loadAnimation有一个值。试试这个:

export const Loader: React.FC = () => {
  const element = useRef<HTMLDivElement>(null);

  useEffect(() => {
    if(element.current) // add this
       lottie.loadAnimation({
         animationData,
         container: element.current,
         loop: true
       });
  }, [element]); // add this, it triggers this effect everytime element changes

  return (
    <Wrapper>
      <div ref={element}></div>
    </Wrapper>
  );
};

OR

container: element.current as HTMLDivElement,    

OR

container: element.current!,    

第一个选项是最干净的,因为它不容易出错。