javascript - আমি React.js একটি উপাদান এর props আপডেট করতে পারেন?




reactjs properties (4)

কোনও উপাদান তার নিজস্ব প্রোপগুলি আপডেট করতে পারে না যতক্ষণ না তারা অ্যারে বা বস্তু থাকে (যদি কোনও উপাদান তার নিজস্ব প্রপ্সগুলি আপডেট করে তবে এমনকি এটি একটি প্যাটার্ন-এন্টি-প্যাটার্ন) তবে এটির অবস্থা এবং তার সন্তানের উত্সগুলি আপডেট করতে পারে।

উদাহরণস্বরূপ, একটি ড্যাশবোর্ডে তার অবস্থাতে একটি speed ক্ষেত্র রয়েছে এবং এটি একটি গেজ সন্তানের কাছে পাস করে যা এই গতি প্রদর্শন করে। এর render পদ্ধতিটি কেবল return <Gauge speed={this.state.speed} /> । যখন ড্যাশবোর্ড এই this.setState({speed: this.state.speed + 1}) , গেজ speed জন্য নতুন মান দিয়ে পুনরায় রেন্ডার করা হয়।

এই ঘটনার ঠিক আগে, গেজের componentWillReceiveProps WillReceiveProps বলা হয়, যাতে গেজের নতুন মানটি পুরোনোটির সাথে তুলনা করার সুযোগ থাকে।

React.js এর সাথে কাজ শুরু করার পরে, মনে হচ্ছে প্রোপগুলি স্ট্যাটিক (অভিভাবক উপাদান থেকে পাস করা হয়েছে), যখন ঘটনাগুলির উপর ভিত্তি করে state পরিবর্তন করে। যাইহোক, আমি ডক্সগুলিতে লক্ষ্য করেছি componentWillReceiveProps উইলআরসিভাইভপ্রপ্সের একটি রেফারেন্স যা বিশেষভাবে এই উদাহরণটি অন্তর্ভুক্ত করে:

componentWillReceiveProps: function(nextProps) {
  this.setState({
    likesIncreasing: nextProps.likeCount > this.props.likeCount
  });
}

মনে হচ্ছে এই বৈশিষ্ট্যগুলি পরবর্তী nextProps তুলনায় nextProps উপর ভিত্তি করে একটি nextProps হতে this.props । আমি কি অনুপস্থিত? কিভাবে props পরিবর্তন, অথবা আমি এই বলা হয় যেখানে ভুল হয়?


তারা অ্যারে যদি props আপডেট ট্রিক:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button
} from 'react-native';

class Counter extends Component {
  constructor(props) {
    super(props);
      this.state = {
        count: this.props.count
      }
    }
  increament(){
    console.log("this.props.count");
    console.log(this.props.count);
    let count = this.state.count
    count.push("new element");
    this.setState({ count: count})
  }
  render() {

    return (
      <View style={styles.container}>
        <Text>{ this.state.count.length }</Text>
        <Button
          onPress={this.increament.bind(this)}
          title={ "Increase" }
        />
      </View>
    );
  }
}

Counter.defaultProps = {
 count: []
}

export default Counter
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

যদি আপনি mapProps ব্যবহার mapProps , তবে নতুন mapProps ইনকামিং mapProps থেকে তৈরি করতে mapProps ব্যবহার করুন

উদাহরণস্বরূপ সম্পাদনা করুন:

import { compose, mapProps } from 'recompose';

const SomeComponent = ({ url, onComplete }) => (
  {url ? (
    <View />
  ) : null}
)

export default compose(
  mapProps(({ url, storeUrl, history, ...props }) => ({
    ...props,
    onClose: () => {
      history.goBack();
    },
    url: url || storeUrl,
  })),
)(SomeComponent);

সাজসরঞ্জাম

একটি প্রতিক্রিয়া উপাদান পরিবর্তন করা যেতে পারে যে তথ্য সংরক্ষণ করার জন্য props ব্যবহার করা উচিত, কিন্তু শুধুমাত্র একটি পৃথক উপাদান দ্বারা পরিবর্তন করা যেতে পারে।

অবস্থা

একটি প্রতিক্রিয়া কম্পোনেন্ট নিজেই পরিবর্তন করতে পারেন তথ্য সংরক্ষণ করতে রাষ্ট্র ব্যবহার করা উচিত।

ভাল উদাহরণ ইতিমধ্যে Valéry দ্বারা প্রদান করা হয়।







properties