我正在尝试映射一组对象,并使用name键将其传递给react select
中的options prop。我可以用常规JS来做这个吗?我试图结合这个例子。
我的模拟数据
mock.onGet("/dataschemas").reply(200, {
data: [
{
id: "2147483599",
selfUri: "/dataschemas/2147483599",
name: "Book Catalog"
},
{
id: "2147483600",
selfUri: "/dataschemas/2147483600",
name: "Business Articles"
},
{
id: "2147483602",
selfUri: "/dataschemas/2147483602",
name: "Phone Data"
}
]
});
在cDM
中,我用响应更新状态,并将其存储在模式
中
componentDidMount() {
axios.get("/dataschemas").then(function(response) {
console.log(response.data.data);
this.setState({
schemas: response.data.data
});
console.log(this.state.schemas);
});
}
然后在我的选择组件中,我将模式设置为选项
属性,并映射到
值
属性中的模式
<Select
id="color"
options={this.state.schemas}
isMulti={false}
value={this.state.schemas.filter(
({ name }) => name === this.state.name
)}
getOptionLabel={({ name }) => name}
getOptionValue={({ id }) => id}
onChange={({ value }) => this.setState({ name: value })}
onBlur={this.handleBlur}
/>
在我的codesandbox示例中,我似乎无法在props中获得正确的值,以在下拉选择中显示数据集名称
有关与此问题相关的react select文档的详细信息
您正试图从响应函数范围内访问状态。将您的componentDidMount更改为:
async componentDidMount() {
const response = await axios.get("/dataschemas");
if (response.data && response.data.data) {
this.setState({ schemas: response.data.data });
}
}
这是一个工作代码沙盒
问题似乎是您使用的是函数语法而不是胖箭头语法,因此绑定不正确,因此未定义this.setState
有关函数和胖箭头语法之间差异的更多信息,请参见此处
这是怎么运作的?我喜欢把它想象成胖箭头函数没有自己的或者不改变“这个”的上下文。他们让它保持独立,以便它与创建函数的上下文保持相同。
对于调试类似这样的未来问题,我建议从查看javascript控制台错误开始——最初的提示是this.setState
未定义的错误
<代码>
this.state.schemas.filter(
({ name }) => name === this.state.name
)
对数组调用.filter
,将返回另一个数组。因此,您将数组传递给值
,而不是单个对象。只需添加一个[0]
即可展开阵列:
this.state.schemas.filter(
({ name }) => name === this.state.name
)[0]
或者使用. search
来代替:
this.state.schemas.find(
({ name }) => name === this.state.name
)
我使用.map()函数的方式与在其他项目中完全相同,但在我当前正在处理的项目中,它向我抛出了一个错误:这是我的代码(正如我提到的,它的结构在其他项目中也适用): 我想知道这是否与我在从外部库导入的组件内部进行映射有关。
问题内容: 我是React JS的新手,问题是我需要在这段代码中显示数据库中的所有字段。我已经能够在浏览器控制台中将所有数据作为对象获取,并且能够在浏览器中查看数组中的最后一条数据,但无法查看它们。请原谅我代码中的格式错误,这是我的新知识。在此先感谢..... 输出和代码 浏览器视图:Lands of Toys Inc.是名称131是ID JSON数据: 这些数据是通过以插件形式编写的PHP代码获
我有一个mongodb文档,我正在使用axios ajax调用来提取它。文档有一个对象数组,其中还包含一个嵌套的对象数组。每个对象都分配了一个mongo id。最顶端的数据显示在相应的最顶端的表示组件中,但对象的后续阵列不会显示在其相对表示组件中。我得到的错误是。“TypeError:this.props.card.rdfts未定义”,但会显示它的非数组同级。然而,当我查看react-dev工具和
我想获取一个Javascript对象并将其转换为哈希数组。 以下操作仅获取对象的一个元素并将其转换为数组: 返回: 但是,当我试图创建散列元素来组成数组时,出现了一个错误: 返回: 我做错了什么?
在一个DOM操作练习中,我学习了如何使用纯JavaScript创建HTML元素。也就是像这样的东西: 我必须创建一个函数,允许用户将对象作为参数传入,以设置元素的属性。这个对象包含任意数量的键(属性)和值(属性值)。即属性可以是“src”,值可以是“image.jpg”。类似的东西。用户可以在调用函数时向此对象传递任意多的属性。 附带说明,对代码和JS都很新,请原谅我:P
React 的props传递是否只能传递对象,而不能传递数组? 我有如下的数组数据: 传递数据到: 我在组件内接受的时候,会变成对象: 所以,是否React 的props传递是否只能传递对象,而不能传递数组?如果想要传递数组应该怎么传递呢?对treeData 进一步封装是吗?