【问题标题】:Issue with 'styled-component': Error: Invalid hook call'styled-component' 的问题:错误:无效的钩子调用
【发布时间】:2020-05-22 01:54:54
【问题描述】:

我正在学习他们使用styled-component 的教程。渲染后在 js 文件中分配样式,我收到 Invalid hook 调用。这是我的第一个反应教程,所以我很难用谷歌搜索答案。下面是我正在运行的代码。只有当我调用<MovieGrid> 时才会弹出错误。任何帮助将不胜感激

/* eslint react/no-did-mount-set-state: 0 */
import React, { Component } from 'react';
import styled from 'styled-components';
import Movie from './Movie';

class MoviesList extends Component {
  state = {
    movies: [],
  }

  async componentDidMount() {
    try {
      const res = await fetch('url');
      const movies = await res.json();
      this.setState({
        movies: movies.results,
      });
    } catch (e) {
      console.log(e);
    }
  }

  render() {
    return (
      <MovieGrid>
        {this.state.movies.map(movie => <Movie key={movie.id} movie={movie} />)}
      </MovieGrid>
    );
  }
}

export default MoviesList;

const MovieGrid = styled.div`
  display: grid;
  padding: 1rem;
  grid-template-columns: repeat(6, 1fr);
  grid-row-gap: 1rem;
`;

【问题讨论】:

  • 你能把作业const MovieGrid移到课前试试吗?
  • 我已将 const MovieGrid 移动到 import 语句的下方,但仍然收到相同的错误消息

标签: javascript reactjs react-hooks styled-components


【解决方案1】:

所以问题最终出现在另一个文件中。我试图import Movie,但我不知道默认情况下变量不会导出,所以我最终在声明之前添加了导出并解决了这个问题。

export const Poster = styled.img`
  box-shadow: 0 0 35px black;
`;

【讨论】:

    【解决方案2】:

    你是把它写成第三方包吗?供其他包使用。

    如果是,那么

    请浏览这些链接。

    https://styled-components.com/docs/faqs#how-can-i-fix-issues-when-using-npm-link-or-yarn-link

    https://styled-components.com/docs/faqs#i-am-a-library-author-should-i-bundle-styledcomponents-with-my-library

    https://webpack.js.org/guides/author-libraries/

    https://robkendal.co.uk/blog/2019-12-22-solving-react-hooks-invalid-hook-call-warning/

    有助于理解所有图片

    就我而言,问题在于冗余的 React 和 Styled 组件

    因此,我 npm 将小部件库中的 react 和 styled-component 链接到消费者包。

    考虑到两者都在同一个文件夹中,然后从添加链接到 react 和 styled 组件

    npm link ../<consmer-package>/node_modules/react
    
    npm link ../<consmer-package>/node_modules/styled-components
    

    【讨论】:

    • 有用的链接,谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2021-11-06
    • 2021-10-23
    • 2021-03-30
    • 2020-08-01
    • 1970-01-01
    • 2022-07-14
    相关资源
    最近更新 更多