Relay-Modern 尝试更新已卸载的组件“Relay(Songs)”

Relay-Modern Attempted to update component `Relay(Songs)` that has already been unmounted

我正在使用 found-relay 进行路由。

如果我不使用片段而只是在查询中指定名称,那么它就可以正常工作。

我做错了什么?

songsContainer.js:

import Songs from './component';

export const query = graphql`
  query songsContainerQuery {
    songs {
      ...songsContainer_songs
    }
  }
`;

export default createFragmentContainer(Songs, graphql`
  fragment songsContainer_songs on Song {
    name
  }`,
);

component.js:

const Songs = ({ songs }) => (
  <Audios
    audios={songs}
  >
    <Song />
  </Audios>
);

export default Songs;

routeConfig.js:

import Songs, { query as songsQuery } from '../../songs/songsContainer';

export default makeRouteConfig(
  <Route path="/">
    <Route Component={PrimaryLayout}>
      <Route exact path="/" Component={Songs} query={songsQuery} />
    </Route>
  </Route>,
);

我们需要添加一个 plural 指令,否则您会收到此错误:

graphql`
  fragment songsContainer_songs on Song @relay(plural: true) {
    name
}`

糟糕的错误消息,我将在中继上为糟糕的错误消息创建一个问题。