Fehler beim Exportieren von Variablen in Reactjs

Nov 19 2020

Hallo, ich habe diese Komponente in reagieren js:

import React from 'react';
import './Questions.css';

const Questions = (props) => {
    

    let questions = Object.keys(props.slices).map((questionKey, i) => (
        <li key={i}>
            <p>{props.slices[questionKey].question}</p>
            <div className="Answer">
                <input
                onChange={props.selectScore(questionKey)} 
                type="range" 
                min="1" 
                max="10" 
                value={props.slices[questionKey].transform === '1' ? '10' : props.slices[questionKey].transform.replace('0.','')} 
                className="rangeInput"
                style={{background: props.slices[questionKey].fill}} />
                <span className="Score" style={{backgroundColor: props.slices[questionKey].fill}}>
                    <div className="leftArrow" style={{borderRight: '5px solid ' + props.slices[questionKey].fill}}></div>
                   <span className="Score" style={{backgroundColor: props.slices[questionKey].fill}}>
                    {/* <div className="leftArrow" style={{borderRight: '5px solid ' + props.slices[questionKey].fill}}></div> */}
                    {props.slices[questionKey].transform === '1' ? '10' : props.slices[questionKey].transform.replace('0.','')}
                  </span>
                </span>

 
            </div>

        </li>
        
    ));
    
    return (
        <>
           
            My variable = {props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','')}

            {questions}
        </>
    );

    
    
}


export default Questions;

Ich muss diese Zeile exportieren, die in der Rückgabefunktion ist: {props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','')}als Variable, um es in einer anderen Komponente zu verwenden.
Also habe ich das gemacht:

export const V = (value) => (
  value === {props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','')}
)

aber ich erhalte diesen Fehler: Unerwartetes Token, erwartetes "," (47:20)
könnte mir jemand helfen, die Variable zu exportieren. danke im Voraus

Antworten

DevLoverUmar Nov 19 2020 at 17:04

Wie du geschrieben hast

Ich muss diese Zeile exportieren, die in der Rückgabefunktion ist: {props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','')}als Variable, um es in einer anderen Komponente zu verwenden

Ich nehme an, Sie möchten in dieser Komponente nichts rendern, sondern nur einige berechnete Werte zurückgeben. Recht? Wenn ja, sollten Sie die Werte einfach wie folgt zurückgeben.

import React from 'react';
import './Questions.css';

const Questions = (props) => {
    
    // better to use const instead of let, if you don't need to modify a variable...
    const questions = Object.keys(props.slices).map((questionKey, i) => (
        <li key={i}>
            <p>{props.slices[questionKey].question}</p>
            <div className="Answer">
                <input
                onChange={props.selectScore(questionKey)} 
                type="range" 
                min="1" 
                max="10" 
                value={props.slices[questionKey].transform === '1' ? '10' : props.slices[questionKey].transform.replace('0.','')} 
                className="rangeInput"
                style={{background: props.slices[questionKey].fill}} />
                <span className="Score" style={{backgroundColor: props.slices[questionKey].fill}}>
                    <div className="leftArrow" style={{borderRight: '5px solid ' + props.slices[questionKey].fill}}></div>
                   <span className="Score" style={{backgroundColor: props.slices[questionKey].fill}}>
                    {/* <div className="leftArrow" style={{borderRight: '5px solid ' + props.slices[questionKey].fill}}></div> */}
                    {props.slices[questionKey].transform === '1' ? '10' : props.slices[questionKey].transform.replace('0.','')}
                  </span>
                </span>

 
            </div>

        </li>
        
    ));
    
    const myVar = props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','');

    return {myVar,questions};    
    
}


export default Questions;

Und wenn Sie die Werte wie return (<> ... some JSX ... </>);folgt zurückgeben, handelt es sich um gerendertes JSX, das Sie meiner Meinung nach nicht einfach als Variable exportieren können, um es von einer anderen Komponente zu verwenden.

Aktualisieren

Um myVar in einer anderen Komponente zu verwenden, gehen Sie folgendermaßen vor

import Questions from 'questions-file-name';

const selectScore= (key)=>{
// do something with score using key
}

const {myVar,questions} = Questions(slices,selectScore);