проблема рекурсивного реагирования авторефрейм sh браузер - PullRequest
1 голос
/ 21 апреля 2020

Привет всем! У меня большая проблема с этого утра, но до сих пор не найдено решений.

Я создал форум, но хотел бы отображать каждую ветку из моего BDD, и каждая из них принадлежит другой ветке ( вот где я застрял) Итак, чтобы сделать это, создайте рекурсивную функцию:

export const threadLoop = (thread: { message: string; reply: any | null }) => {
  console.log("thread", thread, thread.reply.length);
  let resTab: JSX.Element[] = [];
  let res = {};

  if (thread !== null) {
    resTab.push(<ForumPost postBody={thread.message} />);
    if (thread.reply !== null) {
      for (let index: number = 0; thread.reply.length > index; index++) {
        if (thread.reply[index]) {
          threadLoop(thread.reply[index]);
        }
      }
    }
  }
  return {...res, ...restab};
};

это мой componentDidMount ():

  componentDidMount() {
    const res = this.state.posts.map(
      (postBody: { message: string; reply: any | null }, index: number) => {
        if (postBody.reply === null)
          return <ForumPost key={index} postBody={postBody.message} />;
        else if (postBody.reply !== null) {
          return threadLoop(postBody);
        }
      }
    );
    this.setState({ display: res });
  }

какое-то значение, которое моя функция получила сейчас (я только началось с утра, поэтому все еще получил некоторую «любую» и простую структуру):

export const threads = [
  {
    message: "message 1",
    reply: [
      {
        message: "reply 1",
        reply: [{ message: "reply of a reply", reply: null }],
      }
    ],
  },
  {
    message: "message 2",
    reply: null,
  },
];

Рекурсивность работает нормально до конечной точки, когда я прибыл с реквизитом: { message: "reply of a reply", reply: null } в threadLoop() Я получил большой refre sh в своем браузере и перезапустил (бесконечно l oop на данный момент), и я не знаю почему ... Я изменил многие шрифты так, как я это делаю, но я этого не делаю найдено решение ...

Так что, надеюсь, кто-то знаком с такой проблемой и может мне помочь. Спасибо за то, что прочитал это и понял, что не так! хорошего дня!

...