【发布时间】:2017-06-20 04:49:11
【问题描述】:
我是社区的新手,但我一直在搜索一个星期,看看我的问题是否之前得到了回答,但显然与带有 react 的流星 1.4 相关的并不多。
所以我正在构建一个应用程序(我是 Meteor + React 的新手),它读取存储在服务器上的巨大 XML 文件,然后需要从中提取一些数据,显示它,然后使用它启动一些其他功能在不同页面上获取数据,所以我认为将这个解析为 JSON 对象的 XML 存储到会话变量中是个好主意,但随后问题立即开始,因为第一个简单的数据提取没有反应。
这是代码:
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import { Meteor } from 'meteor/meteor';
import { createContainer } from 'meteor/react-meteor-data';
FlightPlan = new Mongo.Collection("flightPlan");
export default class FlightPlanWrapper extends Component {
constructor(props) {
super(props);
}
xmlDemo(){
Meteor.call('xmlDemo',function(error,flightPlanXML){
let tempXML = flightPlanXML;
Session.set({
'flightPlanXML': flightPlanXML
});
});
}
render() {
const flightNumber = Session.get('flightPlanXML') ? (
<span className="flightNumber">{Session.get('flightPlanXML').FlightPlan.FlightInfo.aTCCallsign}</span>
) : '';
return (
<div id='flightPlan' className='contentWrapper'>
<h2>
Flight Plan
</h2>
{
Session.get('flightPlanXML') ? flightNumber :
<div>
<button onClick={this.xmlDemo.bind(this)}>click me</button>
</div>
}
</div>
);
}
}
export default createContainer (() => {
Meteor.subscribe('flightPlan');
return {
'resolutions': FlightPlan.find().fetch()
};
}, FlightPlanWrapper);
所以我不确定我对系统的理解是否正确,但我想在这个简化版本的代码中做的是显示按钮或该会话变量的内容。
请注意,当我在单击按钮后更改页面然后返回同一页面时,内容会正确更新。
【问题讨论】:
-
更新:我试图破坏在一个名为 (FlightPlanContent.jsx) 的文件上输出航班号以及在另一个文件 (FlightPlanForm.jsx) 上输出按钮的代码。
然后我在 (FlightPlanWrapper.jsx) 中进行调用,以这种方式渲染:{Session.get('flightPlanXML') ? <FlightPlanContent flightData={Session.get('flightPlanXML')}/> : <FlightPlanForm />}但结果仍然相同:输出不是反应式的,它仅在我更改页面后才会更改(而不是刷新,因为它会转储会话变量)。