回答
你可以有一个布尔值来切换你的内容的显示并在AJAX响应中翻转它。
您可以将此布尔值应用于CSS属性或整个DIV内容。
下面是可以工作的解决方案。它不会阻止Render被调用,它只会隐藏视图中的数据相关元素,直到收到呼叫响应。
componentDidMount() {
$.ajax({
type: 'GET',
url: '/data/',
dataType: 'text',
success: function(response) {
this.setState({show: true, data: response})
}.bind(this)
});
}
render() {
let {data, show} = this.state;
let containerStyle = {
display: show ? 'block' : 'none'
};
return (
<div style={containerStyle}>
WOW
{this.state.pools}
<FilterTable rows = {this.state.data} />
</div>
);
}
如果你不想要这个组件渲染,直到Ajax调用完成后,你应该质疑为什么你在所有加载该组件之前Ajax调用完成。 如果您希望Component呈现this.state.pools而不管您是否拥有this.state.data,我会建议您的render方法有条件地呈现FilterTable。
render() {
let filterTable;
if (this.state.data && this.state.data.length > 0) { // assuming an array
filterTable = (
<FilterTable rows = {this.state.data} />
);
}
return (
WOW
{this.state.pools}
{filterTable}
);
}
但是,如果你想,当你有this.state.data倒不如有这个组件的父执行Ajax调用,只有当必要信息可创建此组件只呈现。一般来说,如果您立即更改componentDidMount中的组件数据,则只需将该信息作为道具传递即可。
对不起,'this.props.data'和'this.props.pool'应该是相同的变量。 –
然后,我肯定会建议只有在拥有所有数据时才创建此组件的实例。 – jhonvolkd
我该怎么做呢?对不起,我是React的初学者。 –
我假设您只想在接收数据时渲染组件。下面的代码片段呈现了ajax调用成功的组件。 React具有允许我们动态地在DOM中装入组件的函数。 您将需要导入反应。
import ReactDOM from 'react-dom';
componentDidMount() {
$.ajax({
type: 'GET',
url: '/data/',
dataType: 'text',
success: function(response) {
this.setState({data: response})
ReactDOM.render(<FilterTable rows = {response} />,document.getElementById('filterTableContainer'));
}.bind(this)
});
}
render() {
let {rows} = this.state.data
return (
<div>
WOW
{this.state.data}
<div id="filterTableContainer"></div>
</div>
);
}
正是我需要的!谢谢! –
我宁愿选择一个非常简单的方法。我将有一个以show set value的名字命名为false的状态。并且在回调中成功的ajax返回后,将'show'的值设置为true。并在渲染中根据'show'的值在返回中安装jsx代码。
componentDidMount() {
$.ajax({
type: 'GET',
url: '/data/',
dataType: 'text',
success: function(response) {
this.setState({data: response, show: true});
}.bind(this)
});
}
render() {
let {rows} = this.state.data
return (
<div>
WOW
{this.state.show === true : <div>
{this.state.data}
<FilterTable rows = {this.state.data} />
</div>: null
}
</div>
);
}
- 1. jQuery ajax调用不呈现html
- 2. AJAX调用后呈现Facebook评论框
- 3. 成功ajax调用后呈现部分?
- 4. Asp.Net AJAX调用的单控制呈现
- 5. jquery等待直到AJAX调用完成
- 6. 使用.ascx从ajax调用呈现内容
- 7. jquery ajax不呈现html
- 8. Grails Ajax呈现给GSP
- 9. ASP.Net Webforms w/AJAX慢呈现
- 10. AJAX部分呈现问题
- 11. AJAX不呈现部分
- 12. ajax调用不等待
- 13. 等待AJAX响应完全就绪/呈现
- 14. Rails ajax调用不正确地呈现我的format.js文件
- 15. 如何在jQuery Ajax调用后呈现聪明
- 16. 谷歌地图InfoBox和ajax调用导致多个呈现
- 17. 从Ajax调用时不要呈现布局
- 18. Grails - JS方法中的ajax调用后的呈现页面
- 19. Magento:从Ajax调用模板时呈现空白页
- 20. Rails中的ajax调用无法呈现js.haml
- 21. 如何在AJAX调用中重新呈现Django模板代码
- 22. 部分视图不会在IE 9.0中呈现fron ajax调用
- 23. 无法使用ajax呈现img标记
- 24. 在IE中使用AJAX呈现问题
- 25. MVC - 使用Ajax呈现局部视图
- 26. cakePHP 1.3:使用Ajax呈现问题
- 27. AJAX-等到响应再进行下一次AJAX调用之前
- 28. 等待列表框完成呈现WPF
- 29. 等待工作完成呈现在vuejs
- 30. 如何将CSS样式应用于AJAX调用后呈现的内容
你应该将渲染()函数成功函数内部 – KmasterYC
@KmasterYC这不是如何应对工程 – robertklep