javascript - 如何为特定对象增加价值?
问题描述
大家好,我有一个让我头疼的问题。我会尽可能具体地分解这个
- 在 Laravel 的后端,我有这个Facts表,它有类型和文本,但在我的应用程序中它有 3 个不同的字段
- 所以在前端应该是这样的
事实:[{"type":"engine_size", "text":"User Input"}]
- 这是我在应用程序上的代码:
state = {
controls: {
facts: [{ type: "", text: "" }],
},
};
<View style={styles.inputContainer}>
<Text style={{ color: "white", marginTop: 10 }}> Engine Size
</Text>
<IconInputField
value={this.state.controls.facts.map(item => ({
type: "engine_size",
text: item.text
}))}
onChange={this.factsAddedHandler}
icon={require("../../assets/img/motor.png")}
/>
</View>
- 你能给我一个提示或者我可以如何构建它吗?我很感激。顺便说一句,它应该有这样的结构是有原因的,而且这是一个很长的故事,所以我不能做任何其他事情来让它表现得不同。
解决方案
您可以将数组转换为对象
const facts = [{"type":"engine_size", "text":"User Input"}];
const newFacts= facts.reduce((accumulator, currentValue) => (accumulator[currentValue.type] = currentValue.text, accumulator), {});
console.log(newFacts)
然后像这样为图像创建一个对象映射:
const images = {
engine_size: "../../assets/img/motor.png"
...
}
确保您确切知道从 api 返回的数据是什么样的,因为“engine_size”是硬编码。然后您可以访问您的数据,如下所示
<IconInputField
value={newFacts["engine_size"]}
onChange={this.factsAddedHandler}
icon={require(images["engine_size"])}
/>
推荐阅读
- php - 在 Timber/Twig 主题中使用 WordPress 自定义标题图像
- html - CSS3 没有链接到 HTML5?
- web-services - 测试/托管网络服务
- stm32f4 - STM32 ADC设置频率采样
- python - 如何使用 Python 将 JSON 数据文件映射到 SQLIte 数据库
- javascript - Vanilla JS+AJAX - 检查一个值是否已经存在
- visual-studio-code - 在 vue-cli-3 项目上运行 Mocha Test Explorer 需要哪些 babel 或其他设置?
- php - 检查时间戳的年份
- html - position: fixed 防止元素正确居中
- prolog - 如何从命令行运行 prolog 文件而不是放到 repl 中?