import React, { useReducer, useEffect, useState, Fragment } from 'react' import { RouteComponentProps } from 'react-router' import { reducer, initialState, getLayersAction, updateLayerAction, saveLayersAction, Item } from './reducer' import VectorShow from '../components/VectorShow' type Attr = 'lineColor' | 'lineWidth' | 'fillColor' function StyleEdit(props: RouteComponentProps) { let [state, dispatch] = useReducer(reducer, initialState) let layers = Object.keys(state) let [layer, setLayer] = useState('') let params = props.match.params as any let style = (layer && state[layer]) as Item useEffect(() => { getLayersAction(dispatch, params.id) }, [params.id]) useEffect(() => { layer || setLayer(layers[0]) }, [layer, layers]) const changeHandle = (attr: Attr) => (ev: React.ChangeEvent) => { updateLayerAction(dispatch, layer, { ...style, [attr]: ev.target.value }) } const saveHandle = () => { saveLayersAction(style, params.id) } const verctorInfo = style && { ...style, url: style.getUrl } return (
{style && ( )} {style && }
) } export default StyleEdit