第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

React 阻止組件在單擊事件時重新渲染

React 阻止組件在單擊事件時重新渲染

躍然一笑 2021-09-17 13:46:41
我花了很多時間試圖弄清楚如何阻止我的組件this.createColorBlocks()在render()方法中重新渲染。我讀過關(guān)于純組件和shouldComponentUpdate方法的帖子,但我還沒有找到一種方法,可以讓我將生成的數(shù)組添加到狀態(tài),然后在更新后映射它。我在正確的軌道上嗎?是否在渲染方法中觸發(fā) createColorMethod 方法導(dǎo)致整個組件重新渲染?我怎樣才能避免這種情況?import React, { Component } from "react";import ColorScheme from "color-scheme";import uuidv1 from "uuid/v1";import ColorBar from "../ColorBar/ColorBar";import "./PalettePicker.css";export default class PalettePicker extends Component {  state = {    hue: null,    colorScheme: null,    variation: "pastel",    colors: [],    editable: false  };  // shouldComponentUpdate(nextProps) {  //   return this.props.color !== nextProps.color;  // }  toggleEditable = () => {    const toggle = this.state.editable;    this.setState({ editable: !toggle });  };  generateRandomHue = () => {    return Math.floor(Math.random() * (360 + 1));  };  generateColors = () => {    // The possible values are 'mono', 'contrast', 'triade', 'tetrade', and 'analogic'    const { hue, colorScheme, variation } = this.state;    const { pColorScheme = "mono" } = this.props;    const scheme = new ColorScheme();    scheme      .from_hue(hue || this.generateRandomHue())      .scheme(colorScheme || pColorScheme)      .variation(variation);    // return scheme.colors();    const colors = scheme.colors().map(color => {      return "#" + color;    });    return colors;  };  createColorBlocks = () => {    const generatedColors = this.generateColors();    const colors = generatedColors.splice(0, this.props.totalColors);    console.log(colors);    return colors.map((color, i) => {      const uuid = uuidv1();      return (        <ColorBar          color={color}          vRotate={this.props.vRotate}          number={i}          key={uuid}        />      );    });  };
查看完整描述

1 回答

?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊

react 中的每個狀態(tài)更新都會導(dǎo)致重新渲染,并且當(dāng)您onClick切換editable標(biāo)志時,組件將在每次單擊按鈕時重新渲染。如果您不想每次都重新生成顏色,則需要將該函數(shù)移出render()(例如,移至componentDidMount(),正如 John Ruddell建議的那樣)。


查看完整回答
反對 回復(fù) 2021-09-17
  • 1 回答
  • 0 關(guān)注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號