Убедитесь, что вы используете привязку, чтобы получить компонентные реквизиты в REACT
class FileUploader extends Component {
constructor (props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
onChange=(e,props)=>{
const files = e.target.files;
const selectedFile = files[0];
ProcessFileUpload(selectedFile,props.ProgressCallBack,props.ErrorCallBack,props.CompleatedCallBack,props.BaseURL,props.Location,props.FilesAllowed);
}
handleClick = () => {
this.refs.fileUploader.click();
}
render()
{
return(
<div>
<button type="button" onClick={this.handleClick}>Select File</button>
<input type='file' onChange={(e)=>this.onChange(e,this.props)} ref="fileUploader" style={{display:"none"}} />
</div>)
}
}
Вот фрагмент кода, который я ввел в мои скрипты, который я не буду запускать в среде py2 / 3-agnostic:
# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)
Теперь вы можете использовать real_raw_input. Это довольно дорого, но коротко и легко читаемо.
Теоретически вы можете даже назначить raw_input вместо real_raw_input, но могут быть модули, которые проверяют существование raw_input и ведут себя соответственно. Лучше остаться на безопасной стороне.
Переход между 2.x и 3.x не слишком экстремален, но он меняет некоторые вещи. raw_input теперь просто вводится, если вы хотите использовать старый вход, просто выполните:
eval(input())
Так что просто забудьте raw:)
Вероятно, это не лучшее решение, но до того, как я пришел сюда, я просто сделал это на лету, чтобы продолжать работать, не имея быстрого выхода из исследования.
def raw_input(x):
input(x)
Затем, когда я запускаю raw_input('Enter your first name: ')
на сценарий, над которым я работал, он захватывает его, как input()
.
Возможно, причина не в том, чтобы я этого не обнаружил!
Это работает в Python 3.x и 2.x:
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
global input
в верхней части вызывающей функции.
– kevlar1818
14 August 2013 в 20:00
import __builtin__; input = getattr(__builtin__, 'raw_input', input)
– mbarkhau
3 October 2013 в 17:29
__builtin__
переименовывается в builtins
в Python 3. Оба доступны как __builtins__
в CPython.
– jfs
25 March 2014 в 21:00
getattr(__builtins__, 'raw_input', input)
возвращает значение по умолчанию при импорте в Python 2.7.2.
– Cees Timmerman
26 March 2014 в 10:55
Решение Timmerman отлично работает при запуске кода, но если вы не хотите получать ошибки Undefined name
при использовании pyflakes или аналогичного linter, вы можете использовать следующее:
try:
import __builtin__
input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
pass
flake8
или pyflakes
, чтобы не принимать во внимание весь ваш день с бессмысленными предупреждениями.
– jmagnusson
11 August 2014 в 10:02
В Python 3.xx вам просто нужно input()
not raw_input()
Надежным способом решения этой проблемы является
from six.moves import input
six - это модуль, который исправляет многие из 2/3 общих точек боли в кодовой базе.
input()
иraw_input()
.a = input()
примет пользовательский ввод и поместит его в правильный тип. Например: если пользовательский тип 5, то значение вa
является целым числом 5.a = raw_input()
будет принимать пользовательский ввод и помещать его как строку. Например: если пользовательские типы 5, то значение вa
является строкой '5', а не целым числом. Думал, что это может быть хорошая информация для новичков в питоне, подобных мне. – Vishnu Narang 5 March 2016 в 13:22