javascript - Javascript:类更改不重新呈现
问题描述
我正在尝试使用钩子在 React Native 上的地图上更新我的标记坐标,但我不熟悉 Java 脚本及其工作方式。除非我退出并重新进入屏幕,否则坐标会更新但不会反映在地图上(标记不会移动到新坐标),但我希望它在设置新坐标时自动更新。我曾尝试使用 render() 但由于某些错误(函数作为 React 子级无效)而无法正常工作。有没有办法强制渲染或替代可用于这种情况的 React Native 的钩子?
可以使用 setxCord 和 setyCord 设置标记 x,y 坐标
<MapboxGL.MarkerView coordinate={[xCord, yCord]} anchor={{x: 0, y: 0}} draggable={false}>
我试过这样做
// to update new position for marker
export class Position {
constructor(x,y) {
this.x = 5;
this.y = 5;
}
getX() {
return this.x;
}
setX(x) {
this.x = x;
}
getY() {
return this.y;
}
setY(y) {
this.y = y;
}
setCoordinates(x,y) {
var dx = x * 0.12 * 6.24 / 7.8 + 1.96;
var dy = y * 0.12 * 9.55 / 12 + 0.35;
this.x = dx;
this.y = dy;
}
}
const createScanHandler = () => {
console.log(position);
position.setCoordinates(32.5, 67.5);
}
let position = new Position();
我也尝试过使用 .bind() 但它没有用。我还研究了如何使用 componentDidMount 来更新坐标,但我不知道如何使用它,因为我不熟悉 React 和 JS。
任何帮助是极大的赞赏。先感谢您。
解决方案
尝试将您的坐标存储在:
const [coordinate, setCoordinate] = React.useState(/* here you object or array */);
如果您看到链接React 生命周期方法。你会看到在改变 props 和 state 之后调用了什么 render()。
推荐阅读
- java - 无法使用 ValueEventListener 从 Firebase 检索数据
- jquery - 如何在单击按钮时重新加载 jquery 数据表中的数据?
- vegan - betadisper 中的错误(dissimilarity_matrix ~ Group):距离“d”必须是“dist”对象
- amazon-web-services - 维护 AP-NORTHEAST-1 区域中的 Amazon RDS API
- javascript - 如何使用 with dynamic IDs?
Given a HTML-template like this:
<template id="paragraph-template"> <p>Hi, I am a paragraph</p> </template>
I load and append this template via JS
- node.js - 为我的 Service Worker 构建一个 App Shell 以使用 Handlebars 进行缓存
- bash - 如何使用 Bash 删除文件名中的最后一个字符?
- swift - 我的 API 请求代码产生了一个我无法调试或理解的错误
- dns - Route53 托管区域无法重定向到 ELB
- javascript - 来自两个不同调用的表的自定义过滤器