函數renderNotes()
應該返回在單獨文件中映射的數組。我注意到當我返回一些JSX時,沒有任何東西返回到屏幕上。我想我知道原因是因爲它將信息返回給跟蹤器功能。如何在tracker.autorun()函數內返回renderNotes()
函數?流星 - 返回裏面的Tracker.autorun函數不返回任何東西
import { Meteor } from "meteor/meteor";
import React from "react";
import { withRouter, Link } from "react-router-dom";
import { Accounts } from "meteor/accounts-base";
import { Tracker } from "meteor/tracker";
import SubjectRoutes from "./subjectRoutes/subjectRoutes";
import { Notes } from "../methods/methods"
import Menu from "./Menu.js";
class Home extends React.Component{
componentWillMount() {
if(!Meteor.userId()){
this.props.history.replace("/login")
}
}
logoutUser(e){
e.preventDefault()
Accounts.logout(() => {
this.props.history.push("/login");
});
}
renderNotes(){
Tracker.autorun(function() {
Meteor.subscribe('notes');
let notes = Notes.find().fetch();
// return notes.map((note) => {
// return <p>{note.imageURL}</p>
// })
return <p>asdas</p> //<--Here
});
}
render(){
return (
<div>
<button onClick={this.logoutUser.bind(this)}>Logout</button>
{this.renderNotes()}
<Menu />
</div>
)
}
}
export default withRouter(Home);
只需一眼,你需要考慮'renderNotes'正在做什麼,並且_when_您正在訂閱。如你所知,每次調用'autorun'內的函數時都會重新訂閱。 – chazsolo
對不起,我是一名初學者,在將tracker.autorun函數以外的訂閱放入其中之後會有什麼結果,因爲您無需繼續訂閱,所以速度更快?以及我將如何處理我之前詢問的退貨問題? –
您是否閱讀過[將Meteor數據導入React組件的指南](https://guide.meteor.com/react.html#using-createContainer)?考慮數據和組件生命週期。您在組件掛載時訂閱一次,(可能)在卸載時取消訂閱。 'renderNotes'函數應該只做一件事:渲染正確的元素。當該方法被調用(並且由於訂閱而重新運行)時,組件應該擁有它所需的數據。 – chazsolo