看来你不能,但我无法确定原因。
以下是导致问题的代码:
public async Task<HttpResponseMessage> GetBlobDownload(int blobId)
{
// IMPORTANT: This must return HttpResponseMessage instead of IHttpActionResult
try
{
var result = await _service.DownloadBlob(blobId);
if (result == null)
{
return new HttpResponseMessage(HttpStatusCode.NotFound);
}
// Reset the stream position; otherwise, download will not work
result.BlobStream.Position = 0;
// Create response message with blob stream as its content
var message = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(result.BlobStream)
};
// Set content headers
message.Content.Headers.ContentLength = result.BlobLength;
message.Content.Headers.ContentType = new MediaTypeHeaderValue(result.BlobContentType);
message.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = HttpUtility.UrlDecode(result.BlobFileName),
Size = result.BlobLength
};
return message;
}
catch (Exception ex)
{
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.InternalServerError,
Content = new StringContent(ex.Message)
};
}
}
错误将我指向文档中的页面,该页面说明必须返回有效的React元素(或null)。&#39;
我跟随这里的例子
class App extends React.Component {
render() {
var elems = Array(~~(this.props.number)).fill(0).map( ()=> <div>test</div>);
console.log(elems); //(5) [Object,Object,Object,Object,Object]
return (
{elems}
)
}
}
ReactDOM.render(<App number='5' />, document.querySelector('#app'))
那是使用数组,所以它可能,但不知何故地雷不同。
答案 0 :(得分:1)
正如@Andrew Li指出的那样,原始代码返回的是一个非React Element对象,它是错误的来源。 React期望返回一个对象,但类型{elems: elems}
无效。
React组件可能(当前)只返回一个元素(请参阅React Component docs中的警告)而不是数组。用父母包装数组应该可以解决问题。
class App extends React.Component {
render() {
var arr = Array(~~(this.props.number)).fill(0).map( ()=> <div>test</div>);
return (
<div>
{elems}
</div>
)
}
}