2017-02-05 2 views
0

Я пытаюсь сопоставить массив, хранящийся в реквизитах, в моем компоненте React. Проблема в том, что я продолжаю получать ошибку, заявляя, что «шаг не определен», даже если у меня есть ряд шагов, определенных ниже. Любые мысли о том, что я делаю неправильно? Заранее спасибо!Доступ к массиву React prop в компоненте

render() { 
const protocol = this.props.protocol; 
const steps = protocol.steps; 
let stepList = null; 

if (steps != null) { 
    stepList = <ul> 
    steps.map(
     step => <li>{step.title}</li> 
    ) 
    </ul>; 
} else { 
    stepList = 'Do not display list'; 
} 

return (
    <div className="protocols-detail"> 
    List of steps for {protocol.title} 
    { stepList } 

    </div> 
); 

}

enter image description here

ответ

1

Проблема в этой строке, вы забыли использовать {}, чтобы использовать любой код JS внутри HTML элемента всегда использовать {} попробовать это:

stepList = <ul> 
    { 
     steps.map(
     (step,i) => <li key={i}>{step.title}</li> 
     ) 
    } 
    </ul>; 

Еще одна вещь всегда назначает уникальные key для каждого элемента при создании ui elements dynamically в loop.

+0

Спасибо! Я все еще участвую в процессе обучения, и я ценю помощь. –

+0

рад, чтобы помочь вам :), если вы начинаете работать в реаджетах, тогда прочитайте этот, по крайней мере, основные вещи, это поможет вам много :) https://facebook.github.io/react/docs/hello-world.html –

1

Вам нужно обернуть steps.map в { } (внутри <ul></ul> тегов)

так и должно быть:

render() { 
const protocol = this.props.protocol; 
const steps = protocol.steps; 
let stepList = null; 

if (steps != null) { 
    stepList = <ul> 
    {steps.map(
     step => <li>{step.title}</li> 
    )} 
    </ul>; 
} else { 
    stepList = 'Do not display list'; 
} 

return (
    <div className="protocols-detail"> 
    List of steps for {protocol.title} 
    { stepList } 

    </div> 
); 
Смежные вопросы