如何在Meteor和React中将对象从容器传递给类?

时间:2017-05-27 10:24:24

标签: javascript mongodb reactjs meteor

我正在尝试在javascript的对象中获取值,但它以某种方式失败。我设法通过findOne方法从mongoDB获取预期数据。这是我的代码和控制台日志。

int

然后控制台说:

对象{_id:“bpMgRnZxh5L4rQjP9”,文字:“你喜欢苹果吗?”}

我想要的只是对象中的文字。我已经尝试过了。

const title = Questions.findOne({_id: props.match.params.id});
console.log(title);

但我无法访问它......错误信息如下。

未捕获的TypeError:无法读取未定义的属性“text”

这听起来很容易,但我不能靠自己来解决。谁能帮助我?

附加背景 我正在使用Meteor和React。我想将对象内部的文本从容器传递给类。我想在render()中呈现文本。但它没有从容器中接收任何数据......容器中的console.log运行良好并显示对象。

console.log(title.text);
console.log(title[text]);
console.log(title["text"]);
console.log(title[0].text);

1 个答案:

答案 0 :(得分:0)

这里的问题是,在安装容器时,数据尚不可用。由于我没有在您的容器中看到任何订阅,我假设您在其他地方处理,因此无法知道数据何时准备就绪。你有2个选择。

1)将订阅移动到容器中并使用订阅句柄ready()函数来评估数据是否准备就绪。显示微调器或其他东西。阅读this

2)使用lodash / get函数(docs)来处理空道具。你需要

npm install --save lodash

然后

import get from 'lodash/get';

然后在你的类渲染方法中:

render() {
  const text = get(this.props, 'title.text', 'you-can-even-define-a-default-value-here');
  // then use `text` in your h1.
  return (...);
}

这对你有用吗?