Сборка ReactJS несовместима между средами

Я предполагаю, что это может быть вопрос, специфичный для моей рабочей среды, но я был бы признателен за некоторую проницательность и совет, где смотреть дальше, потому что я схожу с ума в этой точке.

Я использую React 0.14 и режим эмуляции IE11 для IE8.

В среде разработки ошибка, приведенная ниже, обычно выдавалась, прежде чем key={index} это анти-паттерн и исправление - замена index с уникальными значениями, взятыми из каждого отдельного элемента, например "product_" + product.id + "_" + product.value, Это может стать проблемой для динамически генерируемого списка, так как он перерисовывается при каждом изменении (см. Ниже). Теперь все работает и не выдается никакой ошибки.

SCRIPT5022: processUpdates (): невозможно найти дочерний элемент 9 элемента. Это, вероятно, означает, что DOM был неожиданно мутирован (например, браузером), обычно из-за того, что забыл <tbody> при использовании таблиц вложенные теги, такие как <form>, <p>, или же <a>или используя не-SVG элементы в <svg> Родитель. Попробуйте проверить дочерние узлы элемента с помощью React ID .0,

Примечание: нет вложенных <form>, <p>, или же <a> теги и я не забыл <tbody> тег (без элементов таблицы). нет <svg> родители тоже.

Однако при загрузке одной и той же сборки в тестовой среде приведенная выше ошибка генерируется постоянно - очевидно, для любого компонента с некоторыми динамически генерируемыми элементами HTML. Кажется, что обе среды имеют одинаковую конфигурацию. Разница лишь в том, кто может получить доступ к каждой среде.

Пример компонента списка (элементы списка извлекаются из службы и затем загружаются в состояние Redux):

import * as React from "react";

interface SuggestionProps extends React.HTMLProps<HTMLDivElement>{
    // props
};

const SuggestionInput = (allProps: SuggestionProps) => {
    const {...props} = allProps;

    return (
    <div className="form-group">
        <input 
            className="form-control" 
            type="text" 
            name={name} 
            value={value} 
            autoComplete="off"
            onChange={()=>changeAction(params)} 
            onBlur={()=>blurAction(params)} />
        <ul className="list-group suggestions">
        {
          listDisplay?
            suggestionList.map(function(elem: ListItem){
                return (
                    <li 
                      key={"list_item_" + elem.value + "_" + elem.zip} 
                      className="list-group-item" 
                      onClick={(e)=>listAction(e.currentTarget.value)}>
                            {elem.display}
                     </li>
                );
            })
          : null
        }
        </ul>
    </div>
    )
};

export default SuggestionInput;

Еще один динамический компонент:

import * as React from "react";
import {isObjectEmpty} from '../utils/HelperMethods';

interface ProductProps extends React.HTMLProps<HTMLDivElement>{
    // props
};

const Product = (allProps: ProductProps) => {
    const {...props} = allProps;

    return (
        <div className={divClasses}>
            <label className={labelClasses}>
                <input 
                    name={name}                    
                    type="checkbox"
                    value={value} 
                    checked={checked} 
                    onClick={(e) => clickAction(e.currentTarget.value)}
                />
                {labelText}

                {   
                    extended?
                        !isObjectEmpty(extended) && selected?
                                <div style={{"fontSize": "8pt"}}>
                                    {extended.label}
                                    <input 
                                        id={extended.name + value}
                                        name={extended.name + value}
                                        type="text"
                                        size={3}
                                        value={extended.value? extended.value : ""}
                                        onChange={(e)=>secondaryAction(e.currentTarget.value) }
                                    />
                                    {
                                        Object.keys(extended[extended.key].inputNames).map((e, index) => {
                                            return (
                                                <input 
                                                key={extended[extended.key].inputNames[e] + value} 
                                                type="hidden" 
                                                name={ extended[extended.key].inputNames[e] + value } 
                                                value={ extended[extended.key][e] } 
                                                />
                                            )
                                        })
                                    }
                                </div>
                        : null
                    : null
                }                
            </label>
        </div>
    )  
};

export default Product;

Пожалуйста, попросите любую информацию, которая вам нужна, но не предоставлена. Заранее спасибо.

0 ответов

Другие вопросы по тегам