React 组件不会在更新状态时更新

里蒂克·库马尔

Map.js

import React, { Component } from "react";
import DatamapsIndia from "react-datamaps-india";

class Map extends Component {
  state = { };
  render() {
    console.log("checkbox value",this.props.checkbox)  //correctly updating on clicking on checkbox
    return (    
        this.props.checkbox ? 
        <DatamapsIndia
          regionData={{
            Maharashtra: {
              value: 10,
            },
          }}
        //   hoverComponent={({ value }) => {
        //     return <span>{value}</span>;
        //   }}
          mapLayout={{
            title: "Covid Map",
            legendTitle: "Active Cases",
            startColor: "#FFDAB9",
            endColor: "#FF6347",
            hoverTitle: "Count",
            noDataColor: "#f5f5f5", // this is the variable that has to change on changing of checkbox value
            borderColor: "#8D8D8D",
            hoverBorderColor: "#8D8D8D",
            hoverColor: "green",
          }}
        /> :
        <DatamapsIndia
        regionData={{
          Maharashtra: {
            value: 10,
          },
        }}
      //   hoverComponent={({ value }) => {
      //     return <span>{value}</span>;
      //   }}
        mapLayout={{
          title: "Covid Map",
          legendTitle: "Active Cases",
          startColor: "#FFDAB9",
          endColor: "#FF6347",
          hoverTitle: "Count",
          noDataColor: "#f24f22", // this is the variable that has to change on changing of checkbox value
          borderColor: "#8D8D8D",
          hoverBorderColor: "#8D8D8D",
          hoverColor: "green",
        }}
      />
    );
  }
}

export default Map;

App.js

import logo from "./logo.svg";
import "./App.css";
import React, { Component } from "react";
import Header from "./Components/Header";
import Body from "./Components/Body";
import Map from "./Components/Map";

class APP extends Component {
  state = {
    checkbox: false,
  };
  constructor(props) {
    super(props);
    this.checkBoxfunction = this.checkBoxfunction.bind(this);
  }

  checkBoxfunction() {
    var check = document.getElementById("customSwitch2").checked;
    this.setState(
      {
        checkbox: check,
      },
      () => {
        console.log(this.state.checkbox);
      }
    );
  }

  componentDidMount() {
    console.log("CheckBox Updation(APP.JS) Mount", this.state.checkbox);
    this.checkBoxfunction();
  }

  render() {
    return (
      <div className="App">
        <Header
          checkbox={this.state.checkbox}
          checkBoxfunction={this.checkBoxfunction}
        />
        <div className="d-flex flex-column">
          <div className="map" style={{ width: "70%" , position:"absolute", right:"10px", top:"130px"}}>
            <Map checkbox={this.state.checkbox} />
          </div>
          <div className="table" style={{ width: "30%"}}>
            <Body checkbox={this.state.checkbox} />
          </div>
        </div>
      </div>
    );
  }
}

export default APP;

在这里,我将复选框值传递给 Map 组件,我希望每当复选框的状态发生变化时都会更新“NoDatacolor”值,但事情不是按照我想要的方式进行的。即使更改复选框状态,我的地图“noDataColor”也保持不变,但地图组件中的控制台行每次单击时都会更新复选框的正确值。

严格的

<DatamapsIndia {...args} />处理它的道具可能是不可变的,我曾leaflet遇到过类似的问题,在这里您可以找到有关它的信息。

您可以尝试以下肮脏的解决方案:

const { checkbox } = this.props;
...
<DatamapsIndia
  ...
  key={`${checkbox}`}
  ...
  mapLayout={{
    ...
    noDataColor: checkbox ? "#f5f5f5" : "#f24f22",
    ...
  }}
/>

希望这有效,请让我知道。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React JS组件不会在状态更改时更新

React 子组件不会在状态更新时重新渲染

React不会在自定义挂钩中重新渲染状态更新时的所有组件

React Native:基于Array.map()的渲染组件不会在状态更改时更新

React不会在useEffect上更新状态

React 视图不会在状态更改时更新

React useCallback不会在状态更改时更新

React - 道具不会在整个组件中更新相同

React Native 组件不会在计算后立即更新

React Redux存储不会在从状态删除项目时更新

React.js不会在状态更新时重新呈现应用程序

使用 React Native 和 Hooks 时,状态不会在 Jest 测试期间更新

React Select不会在单击选项时更新值

当父组件的状态更新时,React 子组件不会更新

已解决:React Redux的useSelector不会在expo react-native上更新存储状态

React组件不会在状态更改时重新呈现

PrevState不会在React JS中立即更新状态值

Bootstrap v4 popover不会在React中的状态更改时更新

组件的 prop 不会在带有 Redux 的 React Native 中更新

数组中的React Child组件不会在prop更改时更新

D3组件不会在React中更新

Textarea不会在道具更新上更新:使用React

组件不会在状态更新时重新渲染

在react-redux中调度2个同步动作时,状态不会在第一个动作上更新

React + Redux。Connect不会更新组件的状态

状态更改后,React不会更新组件

在Mobx中侦听Window Resize事件不会在React Konva中更新舞台组件的宽度和高度

React 组件的地图不会在状态变化时重新渲染

React-redux组件不会在商店状态更改时重新呈现