我有以下代码:
import ReactDom from 'react-dom';
import React from 'react';
import {render} from 'react-dom';
import $ from 'jquery';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: '',
loading: true
}
}
componentDidMount () {
const newsfeedURL = 'https://s3-eu-west-1.amazonaws.com/streetlife-coding-challenge/newsfeed.json';
$.get(newsfeedURL, function(result) {
this.setState({
data: JSON.parse(result),
loading: false
});
console.log(typeof this.state.data.messages);
}.bind(this));
}
render () {
let content;
if (this.state.loading === false && this.state.data.messages) {
content = Object.keys(this.state.data.messages).map(key => {
return <div key={key}>Key: {key}, Value: {this.state.data.messages[key]}</div>;
})
} else {
content = ''; // whatever you want it to be while waiting for data
}
return (
<div>
{content}
</div>
)
}
}
ReactDom.render(
<App />,
document.getElementById('app')
);
但我得到了以下错误:
未捕获的不变违规:对象作为React子对象无效(找到:带有键{正文、附件、视频、主题、updated_at、id、主题、反对票、作者、posted_at、注释、user_vote、好评、状态、标签、位置、track_impact、user_is_following、comments_count}的对象)。如果要呈现子集,请使用数组来代替,或者使用React加载项中的create碎片(对象)包装对象。检查App
的渲染方法。
我看了一下这个答案,但对我的情况没有帮助:不变冲突:对象作为子对象无效
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: '',
loading: true
}
}
componentDidMount () {
const newsfeedURL = 'https://s3-eu-west-1.amazonaws.com/streetlife-coding-challenge/newsfeed.json';
$.get(newsfeedURL, function(result) {
this.setState({
data: result,
loading: false
});
}.bind(this));
}
render () {
let content;
if (this.state.loading === false && this.state.data.messages) {
content = this.state.data.messages.map((ele,key) => {
return <div key={key}>id: {this.state.data.messages[key].id}</div>;
})
} else {
content = ''; // whatever you want it to be while waiting for data
}
return (
<div>
{content}
</div>
)
}
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
在div中,您正试图呈现值:{this.state.data.messages[key]}
这是一个对象。不能直接使用React的JSX渲染对象。但是,您可以呈现此对象中保存的一些实际基本数据类型(例如字符串、数字),例如Value:{this.state.data.messages[key].body}
将呈现对象的body
属性中保存的字符串值。下面是一个演示:http://codepen.io/PiotrBerebecki/pen/bwowxP
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: '',
loading: true
}
}
componentDidMount () {
const newsfeedURL = 'https://s3-eu-west-1.amazonaws.com/streetlife-coding-challenge/newsfeed.json';
$.get(newsfeedURL, function(result) {
this.setState({
data: JSON.parse(result),
loading: false
});
console.log(typeof this.state.data.messages);
}.bind(this));
}
render () {
let content;
if (this.state.loading === false && this.state.data.messages) {
content = Object.keys(this.state.data.messages).map(key => {
console.log(this.state.data.messages[key])
return <div key={key}><b>Key: {key},</b> Value: {this.state.data.messages[key].body}</div>;
})
} else {
content = ''; // whatever you want it to be while waiting for data
}
return (
<div>
{content}
</div>
)
}
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
我试图实现一个简单的功能,的一个按钮,它应该添加放置数组并显示在视图中,但我似乎得到了一个错误,请帮助 这是我的代码, 这是我得到的错误, 我是个新来的土生土长的人,所以我对此一无所知。
在组件的呈现函数中,我有: 所有内容都显示良好,但单击 元素时,我会收到以下错误: 未捕获得错误:不变冲突:对象作为React子级无效(找到:具有键得对象{dispatchConfig,dispatchMarker,nativeEvent,target,currentTarget,type,eventPhase,bubbles,cancelable,timeStamp,defaultPrevent
我正在React中制作一个RecipeBox应用程序,在我尝试实现搜索功能之前,它运行良好。一旦用户在搜索栏中输入搜索项,就会抛出错误。此方法中的块抛出错误- 这是错误消息- 控制台显示- 这表明是一个包含对象的数组。但是会抛出错误- 有趣的是,如果我删除搜索栏功能并完全删除else块,相同的语句就可以正常工作,不会抛出任何错误- 这是我在Codepen上的应用程序。 复制步骤- 在搜索栏中搜索现
我看过其他人提出的与此相关的问题,但找不到合适的答案。我希望将子对象传递给组件,然后在需要它们的地方拉出特定的子对象,我看到的大多数示例都是在相同的位置渲染子对象。 我的组件看起来像这样- 当我记录道具时。父组件中的子组件我得到一个数组,其中包含两个子组件作为对象。是否有一种简单的方法可以在我需要的地方提取特定的子对象,例如我正在使用这并不理想,因为我们将在将来动态传递子元素,并且数组长度可能会更
问题内容: 在带有钩子的React中,更新状态的正确方法是嵌套对象是什么? 一个人怎么会使用到的更新来(附加一个字段)? (改变价值)? 问题答案: 您可以像这样传递新值
我们已经为边栏项目的路由实现了一个新的逻辑,之前所有项目都处于同一级别,现在我们正在实现分层显示,页面可以组合到一个模块中,当用户扩展模块时,他将看到相关页面。 为此,我们的JSON结构也发生了变化,现在我们的路由逻辑实现如下- 上面的代码用于为没有子页面的页面提供路由。 以上代码用于包含子页面的模块的路由 下面的代码与问题无关 在进行这些更改后,我的应用程序有时会按预期工作,但有时会收到以下错误