0

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

   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>
                    )
                })
            )
        })
    }
4

1 回答 1

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>
  ));
}
于 2021-02-21T17:16:16.743 回答