- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,感谢您阅读我的问题并尽力帮助我,并对我的英语表示歉意。
我正在尝试使用 React 在 Redux 上创建一个方法来更改层的可见性。
我的问题是,更改可见性是完美的,但是当所有图层都不可见并尝试将它们更改为可见时,它们的 before 属性未定义,除了最后一个更改之外。
我将通过一个例子更好地解释我。
mapLayers 是一个包含 3 层的数组:
- [2] Layer3
- 1 Layer2
- [0] Layer1
案例1:
如果我隐藏Layer1
,他的前属性未定义,现在我显示Layer1
,现在他的前属性是Layer2
的id。
我的问题:
- [2] Layer3
- 1 Layer2
- [0] Layer1
3 层不可见,因此:
Layer2
更改为可见 -> before = undefinedLayer3
更改为可见 -> before = undefinedLayer1
更改为可见 -> before = Layer2 的 id但是当将Layer3
更改为可见时(在步骤2中),之前应该是未定义的,稍后,当改变Layer2
的可见性时..在Layer3<之前
应该是 Layer2
id。
重要的是要知道我正在使用react-mapbox-gl,并且我需要在属性之前移动和隐藏/显示图层。
before: string 传递图层的id,会在id定义的图层之前显示当前图层。
https://github.com/alex3165/react-mapbox-gl/blob/master/docs/API.md
这是我的代码:
static changeLayerVisibility(layer) {
let mapLayers = [... AxisStore.getStore().getState().map.mapGLlayers];
const ids = mapLayers.map(l => l.id);
const index = ids.indexOf(layer.id);
const newVisibility = (layer.layout.visibility === 'visible') ? 'none' : 'visible';
let nextVisibleLayer = mapLayers.find((layerObj, idx) => idx > index && layerObj.layout.visibility === 'visible');
let updateLayout = Object.assign({}, mapLayers[index], {
layout: Object.assign({}, mapLayers[index].layout, { visibility: newVisibility }),
paint: Object.assign({}, mapLayers[index].paint),
before: newVisibility === 'visible' && nextVisibleLayer ? nextVisibleLayer.id: undefined
});
mapLayers.splice(index, 1, updateLayout);
return (dispatch) => {
dispatch({
type: MapTypeConstants.SET_MAP_LAYERS,
payload: mapLayers
});
};
}
最佳答案
实际上,我认为有更好的方法来设置属性。
<小时/>首先,使用数组来存储可见性属性。如下所示,初始值应该为 false。
interface InVisiablityProps {
visible: Array<Boolean>
}
const initialState:InVisiablityProps = {
invisible: [false,false,false]
}
每次将 View 更改为不可见。将属性更改为!(属性)
关于javascript - 如何检测是否应该更新先前对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743554/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!