反应在组件中获取可观察的值
react getting observable values in component
在下面的组件中设置obsrv数组;
class AnnouncementState {
@observable categories =[];
constructor(){
this.getAnnouncementCategory();
}
getAnnouncementCategory() {
fetch(`..`)
.then((response) => {
return response.json();
})
.then((response) => {
this.categories = response.value.map((item , i)=>{ return {Id:item.Id, Title:item.Title} });
}, (error) => {
});
}
}
我检查了检索到的值,没有问题。我尝试在组件中设置它并在下面渲染它;
@observer
class AnnouncementComponent extends React.Component {
categories = [];
componentWillMount(){
debugger
this.categories=this.props.announcement.categories;
}
render() {
const listItems = this.categories.map((item) => {
return (<li>...</li>)
});
return (
<div id="announcements-tab">
List Items:
<ul className="nav nav-tabs">
{listItems}
</ul>
</div>
);
}
}
我希望看到所有列表项,但 none(仅 "listItems" 字符串)在 html 中,控制台没有错误。我该如何修复和调试它?使用 "debugger" 关键字不显示可观察的内容。
在您的代码中,我没有看到您在哪里创建 AnnouncementState
的实例。这是一个如何获取类别列表的示例。
例如
class AnnouncementState {
@observable categories =[];
@action getAnnouncementCategory() {
fetch(`..`)
.then((response) => {
return response.json();
})
.then((response) => {
this.categories = response.value.map((item , i)=>{ return {Id:item.Id, Title:item.Title} });
}, (error) => {
});
}
}
export default new AnnouncementState(); //here you can create the instance.
@observer
@inject('store') //here substitute with your store name, the name you set in your provider
class AnnouncementComponent extends React.Component {
componentWillMount(){
debugger
this.props.store.getAnnouncementCategory();
}
render() {
const listItems = this.props.store.categories.map((item) => {
return (<li>...</li>)
});
return (
<div id="announcements-tab">
List Items:
<ul className="nav nav-tabs">
{listItems}
</ul>
</div>
);
}
}
这应该有效,只要确保您使用 <Provider store={store}>
传递正确的商店即可。
在下面的组件中设置obsrv数组;
class AnnouncementState {
@observable categories =[];
constructor(){
this.getAnnouncementCategory();
}
getAnnouncementCategory() {
fetch(`..`)
.then((response) => {
return response.json();
})
.then((response) => {
this.categories = response.value.map((item , i)=>{ return {Id:item.Id, Title:item.Title} });
}, (error) => {
});
}
}
我检查了检索到的值,没有问题。我尝试在组件中设置它并在下面渲染它;
@observer
class AnnouncementComponent extends React.Component {
categories = [];
componentWillMount(){
debugger
this.categories=this.props.announcement.categories;
}
render() {
const listItems = this.categories.map((item) => {
return (<li>...</li>)
});
return (
<div id="announcements-tab">
List Items:
<ul className="nav nav-tabs">
{listItems}
</ul>
</div>
);
}
}
我希望看到所有列表项,但 none(仅 "listItems" 字符串)在 html 中,控制台没有错误。我该如何修复和调试它?使用 "debugger" 关键字不显示可观察的内容。
在您的代码中,我没有看到您在哪里创建 AnnouncementState
的实例。这是一个如何获取类别列表的示例。
例如
class AnnouncementState {
@observable categories =[];
@action getAnnouncementCategory() {
fetch(`..`)
.then((response) => {
return response.json();
})
.then((response) => {
this.categories = response.value.map((item , i)=>{ return {Id:item.Id, Title:item.Title} });
}, (error) => {
});
}
}
export default new AnnouncementState(); //here you can create the instance.
@observer
@inject('store') //here substitute with your store name, the name you set in your provider
class AnnouncementComponent extends React.Component {
componentWillMount(){
debugger
this.props.store.getAnnouncementCategory();
}
render() {
const listItems = this.props.store.categories.map((item) => {
return (<li>...</li>)
});
return (
<div id="announcements-tab">
List Items:
<ul className="nav nav-tabs">
{listItems}
</ul>
</div>
);
}
}
这应该有效,只要确保您使用 <Provider store={store}>
传递正确的商店即可。