Почему setState с функцией обратного вызова выдает ошибку: & ldquo; TypeError: Невозможно прочитать свойство «files» из null & rdquo; в то время как нормальные методы setState работают просто отлично? [Дубликат]

По умолчанию, когда вы находитесь внутри функции, у вас нет доступа к внешним переменным.

Если вы хотите, чтобы ваша функция имела доступ к внешней переменной, вы должны объявить ее как global внутри функции:

function someFuntion(){
    global $myArr;
    $myVal = //some processing here to determine value of $myVal
    $myArr[] = $myVal;
}

Для получения дополнительной информации см. Область переменной .

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

Лучшей идеей было бы заставить вашу функцию вернуть результат:

function someFuntion(){
    $myArr = array();       // At first, you have an empty array
    $myVal = //some processing here to determine value of $myVal
    $myArr[] = $myVal;      // Put that $myVal into the array
    return $myArr;
}

И вызвать функцию следующим образом:

$result = someFunction();

Ваша функция также может принимать параметры и даже работать с параметром, переданным по ссылке:

function someFuntion(array & $myArr){
    $myVal = //some processing here to determine value of $myVal
    $myArr[] = $myVal;      // Put that $myVal into the array
}

Затем вызовите функцию следующим образом:

$myArr = array( ... );
someFunction($myArr);  // The function will receive $myArr, and modify it

С помощью этого:

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

Для получения дополнительной информации об этом вам следует прочитать раздел Functions руководства по PHP и, особенно, следующие подразделы:

-1
задан Thomas Vangelooven 23 April 2019 в 11:44
поделиться

2 ответа

Может отсутствовать функция квадратных скобок

 handleselectedFile = event => {
      this.setState((prevState, props) => { <-- here
        return {

          selectedFile: event.target.files[0],
          loaded: 0,
          fileName: event.target.files[0].name
        };
      })
    };
0
ответ дан Yusuf Altıparmak 23 April 2019 в 11:44
поделиться
  try this way     
  handleselectedFile = event => {
     this.setState({

      selectedFile: event.target.files[0],
      loaded: 0,
      fileName: event.target.files[0].name
    },(prevState, props) =>(console.log(prevState,props)))
  };
0
ответ дан Kishan Jaiswal 23 April 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: