【问题标题】:Why map does not work under Tracker.autorun of Meteor?为什么地图在 Meteor 的 Tracker.autorun 下不起作用?
【发布时间】:2021-05-23 18:26:02
【问题描述】:

最近我发现如果我在 Meteor 的 Tracker.autorun 函数中将 map 函数应用到我的数组,它就不起作用,我一直在想为什么?我尝试制作静态数组,即使这不起作用。

   renderMyBooks() {
        Tracker.autorun(() => { 
            Meteor.subscribe("ziglerNata")
            console.log(Meteor.userId());
            const myBooks = BooksInfo.find({ userId: Meteor.userId() }).fetch();
            //const myBooks = [1,2,3,4,5];
            console.log(myBooks);
            return (myBooks.map(book => {
                    return (
                        <div key={book._id} className="book-info">
                            <div className="book-info-content">
                                <div className="book-info-content-t-a">
                                    <h3>{book.title} </h3>
                                    <h5>{book.author}</h5>
                                </div>
                                
                            </div>
                        </div>
                    )
                })
            )
        })
    }

【问题讨论】:

  • 请准确定义“不起作用”。抛出错误?没有渲染?没有反应?

标签: reactjs meteor meteor-tracker


【解决方案1】:

我会建议一种不同的方法。这可能无法直接回答您关于为什么 Tracker.autorun 没有按您预期工作的问题,但我认为这比寻找原始问题的答案对您的帮助更大。

我相信在流星中使用反应数据源的推荐模式是使用useTracker。这是您以该模式重写的代码:

import { useTracker } from 'meteor/react-meteor-data';

const MyBooks = () => {
  const myBooks = useTracker(() => {
    Meteor.subscribe("ziglerNata")
    console.log(Meteor.userId());
    return BooksInfo.find({ userId: Meteor.userId() }).fetch();
  }, []);

  console.log(myBooks);
  return (myBooks.map(book =>
    <div key={book._id} className="book-info">
      <div className="book-info-content">
        <div className="book-info-content-t-a">
          <h3>{book.title} </h3>
          <h5>{book.author}</h5>
        </div>
      </div>
    </div>
  ));
}

【讨论】:

  • 还会将订阅置于一个带有取消订阅处理的 useEffect 中。
猜你喜欢
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
相关资源
最近更新 更多