obtendo erro ao exportar variável em reactjs
Olá, tenho este componente no react 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;
Eu preciso exportar esta linha que está na função return: {props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','')}como uma variável para usá-la em outro componente.
então eu fiz isso:
export const V = (value) => (
value === {props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','')}
)
mas estou recebendo este erro: Token inesperado, esperado "," (47:20)
alguém poderia me ajudar a exportar a variável. Agradeço antecipadamente
Respostas
Como você escreveu
eu preciso exportar esta linha que está na função return:
{props.slices[2].transform === '1' ? '10' : props.slices[2].transform.replace('0.','')}como uma variável para usá-la em outro componente
Suponho que você não deseja renderizar nada neste componente, em vez de apenas retornar alguns valores calculados? Direito? Se Sim, então você deve simplesmente retornar os valores assim.
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;
E se você retornar os valores assim, return (<> ... some JSX ... </>);então será algum JSX renderizado, que eu acho que você não pode simplesmente exportar como variável para ser usado por outro componente.
Atualizar
Para usar myVar em outro componente, faça isso
import Questions from 'questions-file-name';
const selectScore= (key)=>{
// do something with score using key
}
const {myVar,questions} = Questions(slices,selectScore);