我有一个组件的层次结构。应用程序状态位于公共所有者最上面的组件中。我用空对象或GetInitialState中的数组设置初始状态。我通过ajax获取数据,调用该组件的ComponentDidMount中这个状态所有者最上面的组件的方法。但是,无论是在这个组件中使用ajax调用的success回调中的状态集,还是在子组件中使用状态集,通过props将状态传递给它们,我几乎总是会遇到变量找不到或一些未定义的错误。
从概念上考虑,当我挂载组件时会调用render方法,所以它不会在嵌入其中的变量中找到数据。但是我们有getInitialState。这似乎还可以,但如果在呈现方法中使用了嵌套对象,该怎么办呢?getInitialState中的状态只是空对象,因此未定义对to be子元素的引用。
即使使用componentWillMount也不起作用。唯一的方法似乎是拥有初始状态,而不是在呈现中引用任何未定义的子元素。然而,在大多数情况下,这似乎是必要的。我认为与这种必要性相关的问题实际上是一种反模式。
在最初的教程和简单的案例中,我发现React对我非常有用,但现在我不能有效地使用它。
如何正确地以最佳的实践来对抗这种行为?
第一个解决方案:我使用的方法是简单地检查呈现函数中的状态是否存在
render: function() {
var result = { this.state.field ?
this.state.field.embeddedfield ?
<div> this.state.field.embeddedfield </div>
: <div> Data are loading! </div>
: "" }
return {result};
}
第二个解决方案如果希望数据在呈现之前准备就绪,则需要在外部执行第一次提取:
$.ajax({...}).success(function(res) {
<MyView data={res} /> // render your function on success
});
参见this:bind(this)不工作于ajax成功函数
因此,我试图用几个HTML输入创建一个动态表单。我有一个对象数组,其中包含应该呈现的的。目前,我能够呈现两个输入,如文本区域,但我如何处理收音机,复选框,选择连同他们的选项?任何帮助都将不胜感激。 请参见此CodeSandBox。
我正在组装我的第一个基于react的应用程序。我有一个工作应用程序,并已在反应路由器编织。我和巴贝尔在一起。 我在chrome的开发者控制台上得到了以下信息- 我在components/Login.js上有以下组件 在我的app.js我有以下几点- 我认为我的错误在于我导出/导入我的组件的方式,因为错误存在于另一个组件中,并且当我更改上面第一个导入的组件时,错误落在该组件上。 我尝试了各种方法,如
问题内容: 单击按钮后,我将尝试呈现一个段落。 这是我的代码。 在这里,我试图在单击按钮时呈现“你好朋友”。但是没有用。 问题答案: 这不是正确的方法,因为它是一个事件处理程序,它将不呈现元素,您需要的是“元素的条件呈现”。 有关详细信息,请参阅“文档”。 条件渲染 。 脚步: 1-使用具有初始值的状态变量。 2-点击按钮将值更新为。 3-使用该状态值进行条件渲染。 工作代码:
问题内容: 我知道我可以在渲染组件时通过。我也知道这种方法。但是问题是,由于我的组件不知道它的初始状态,并没有太大帮助。我做。所以我想在渲染时通过它。 这样的东西(伪代码): 我知道我可以使用a 作为初始状态,但这闻起来像是反模式。 我该怎么办? 编辑清晰度 想象一下我有一个组件。到我第一次渲染它时,初始状态对应于数据库中当前注释的快照。当用户包含评论时,此列表将更改,这就是为什么它应该是a 而不
主要内容:实例,实例,实例,实例元素是构成 React 应用的最小单位,它用于描述屏幕上输出的内容。 与浏览器的 DOM 元素不同,React 当中的元素事实上是普通的对象,React DOM 可以确保 浏览器 DOM 的数据内容与 React 元素保持一致。 将元素渲染到 DOM 中 首先我们在一个 HTML 页面中添加一个 id="example" 的 <div>: 在此 div 中的所有内容都将由 React DOM 来管
在此处输入图像描述我正在使用use效果挂钩来使用获取api,但它不起作用。当只有一个api时,它可以正常工作,但当我使用另一个api使用createData函数中的use效果挂钩获取数据时,它会出错。 我做了一些研究,我认为这是因为react中的组件重新渲染引起的一些问题,我试图搜索修复,但没有找到它,所以我发布它,如果有任何问题,请在评论中问我,我会给出更多的细节。